{"cells":[{"cell_type":"markdown","metadata":{"id":"AA56459BEFD04CE49DC6FECBBFC34B21","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["# <center> Lecture 5:  Bayesian Inference: From Traditional Foundations to Current Practices  </center>  \n","<center> <h2> Instructor: Dr. Hu Chuan-Peng </h2>  </center>"]},{"cell_type":"markdown","metadata":{"id":"6873A67712474D338A14C043C437919C","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["\n","![Image Name](https://cdn.kesci.com/upload/sl4u01cdqh.png?imageView2/0/w/640)\n","\n","- 请注意，您需要在每个闯关题中取得 90分或以上 的成绩，才能晋级到下一关。  \n","- 希望大家都能积极参与，展现出色的表现！"]},{"cell_type":"markdown","metadata":{"id":"79B9735BC335443EA433DC2AD833DE47","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["#### 分组安排  \n","\n","选课的同学自行组队👭👬（3-5人），班长负责提交名单，提交时间为下周五上课前。"]},{"cell_type":"markdown","metadata":{"id":"475730C9ABC84FBEB065291688FAC32F","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["## 回顾\n","### 单一事件、离散变量和连续变量中的贝叶斯公式  \n","\n","在前面的课程中，我们使用了一些简单的情境来帮助大家建立贝叶斯推断的直觉。  \n","我们通过单一事件、离散变量和连续变量的例子逐步讲解了贝叶斯推断的核心思想：  \n","\n","\n","| 知识点            | 内容描述                                         | 先验                                                              |   似然                                                                             | 贝叶斯更新                 | 感兴趣的目标    |  \n","| -------------- | -------------------------------------------- | --------------------------------------------------------------- | -------------------------------------------------------------------------------- | --------------------- | --------- |  \n","| **单个事件**       | 一个使用特定语言风格的心理学实验被成功重复出来的可能性                  | [OSC2015](https://doi.org/10.1126/science.aac4716)的结果           |   [Herzenstein et al 2024](https://doi.org/10.1177/09567976241254037 )年的研究结果     | 可视化的方式 + 简单计算         | 下次实验的可重复性 |  \n","| **离散变量**       | 多次试验(如10次实验中)的成功率                            | 人为分配的三种成功率(0.2, 0.5, 0.8)和它们出现的可能性                              | 进行重复后的结果在**三种**成功率下出现的可能性                                                        | 简单的手动计算               | 多次实验的可重复性 |  \n","| **连续变量**       | 无数次试验的成功率/正确率                                | 符合成功率/正确率(0~1)特点和先验经验的概率分布                                      | 进行重复后的结果在**所有**成功率/正确率下出现的可能性                                                    | 已被证明的统计学公式            | 实验本身的可重复性 |  \n"]},{"cell_type":"markdown","metadata":{"id":"7EE432DA562A4C59AE9CEBF3DA4C3CDE","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["## 回顾  \n","### 单一事件中体现出的贝叶斯公式\n"," \n","- 某个研究的可重复性与语言风格。\n","\n","**一项研究使用了确切语言（事件 B 已经发生）的心理学研究**，其**可重复**的概率是多少。\n","\n","- A 事件代表的是一项心理学研究是可重复的；\n","- B 事件代表的是一项心理学研究使用了确切语言。"]},{"cell_type":"markdown","metadata":{},"source":["\n","![Image Name](https://cdn.kesci.com/upload/sjp0bqwjgl.png?imageView2/0/w/900)  \n","\n"]},{"cell_type":"markdown","metadata":{},"source":["![Image Name](https://cdn.kesci.com/upload/sl522n7hfr.png?imageView2/0/w/900)"]},{"cell_type":"markdown","metadata":{},"source":["用条件概率公式表示：  \n","\n","$$  \n","P(A|B) = \\frac{P(A \\cap B)}{P(B)}  \n","$$  \n","\n","其中， $P(A \\cap B)$ 表示事件 A 和事件 B 同时发生的概率，即研究既是可重复的，又使用了确切语言，根据上图，这个值为 0.224。  \n","\n","$P(B)$ 表示研究使用确切语言的总概率，即可表示为：  \n","\n","$$  \n","P(B) = \\frac{P(A \\cap B)}{P(not A \\cap B)}  \n","$$  \n","\n","即，可重复且使用确切语言的概率加上不可重复但使用确切语言的概率，具体为：  \n","\n","$$  \n","P(B) = 0.224 + 0.27 = 0.494  \n","$$  \n","\n","代入条件概率公式：  \n","\n","$$  \n","P(A | B) = \\frac{0.224}{0.494} \\approx 0.454  \n","$$  "]},{"cell_type":"markdown","metadata":{},"source":["### 结论\n","\n","- 条件概率告诉我们，随着我们获得新的信息（如事件 B 的发生）， 我们会调整关于在这种情况下事件 A 发生的概率($P(A|B)$)。\n","\n","$$  \n","P(A|B) = \\frac{P(A \\cap B)}{P(B)}  \n","$$  \n","  \n","- 这个公式就是鼎鼎大名的**贝叶斯公式**\n","  \n","- 这正是贝叶斯定理的基础思想：我们通过结合先验信息和新观测数据，不断更新对事件发生概率的认识。"]},{"cell_type":"markdown","metadata":{"id":"4F042DC29A934591B30837F80C9AB5CB","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["### 随机变量随着信息的更新 --> 贝叶斯法则 \n","\n","- 贝叶斯公式描述的是，给定事件 B 已经发生的情况下，事件 A 的发生概率如何调整。\n","- 假如这里的A是特定模型下的一个参数(随机变量)，关于A的概率分布来自于我们的先验知识 $P(A)$ ；\n","- 假如这里的B是我们为了理解A的数据，根据我们模型和A的分布，可以计算似然 $P(B|A)$；\n","- 经过贝叶斯更新，我们可以得到更新的关于A的概率分布： $P(A|B)$。 \n","\n","上述过程中，我们从贝叶斯公式“升级”成了利用贝叶斯法则进行推断： \n","- 贝叶斯推断的核心思想：**在新数据的条件下，更新我们的信念**。\n","- 贝叶斯推断的特点：（不同的）先验与（不同的）数据之间平衡、序列性等"]},{"cell_type":"markdown","metadata":{"id":"BEB809C749FD42FFA3A2BC7F8D1FC4A6","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["所以：\n","\n","1. **贝叶斯推断的本质**与数数相似，符合人类的推理直觉。 \n"," \n","2. 贝叶斯统计的主要作用在于将这种直觉形式化，通过数学工具帮助我们在更复杂的情境中解决问题。 \n","\n","因此，也引出一个问题：既然贝叶斯推断这么符合人的直觉，为什么我们以前在心理统计课上不教它呢？ "]},{"cell_type":"markdown","metadata":{},"source":["- 贝叶斯推断的核心在于**后验分布**。通过结合先验和似然，我们能够得到对未知参数的最新估计。  \n","\n","- 贝叶斯推断的难点在于：如何得到后验分布？"]},{"cell_type":"markdown","metadata":{"id":"F6EB45A3155F46D3ACAFF3BB61C5CE58","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["#### Beta-Binomial是如何得到后验分布的？\n","\n","先前例子：推断编号为 “82111” 被试的正确率，观测到的数据为253 次试验数据，其中有 152 次判断正确。\n","\n","\n","先验（Informative Prior）, $Beta(70,30)$  \n","\n","$$  \n","\\pi | (Y = 152) \\sim \\text{Beta}(70 + 152, \\, 30 + 101)  \n","$$  \n","\n","\n","--> 后验分布可以通过简单的计算得到。\n","\n","非常简洁，但问题在于：是不是所有的贝叶斯分析都可以如何简洁？\n","\n","Beta-Binomial 属于共轭分布簇。  \n"]},{"cell_type":"markdown","metadata":{"id":"5EB48267752E45C2B053FF7B0853E9C1","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["## 共轭先验 (Conjugate Prior)  \n","\n","**共轭先验的定义与解释**  \n","\n","**共轭先验**：在贝叶斯推断中，在给定数据（似然函数）后，先验分布可以产生一个属于同一分布簇的后验分布，称该先验为共轭先验。  \n","- 具体来说，给定一个概率分布簇和它的参数，如果这个参数的先验分布与后验分布属于同一个分布簇，那么这个**先验分布被称为该似然函数的共轭分布**。  \n","\n","**共轭先验的优点是：**  \n","1. **计算简便**：共轭先验使得后验分布的数学形式保持简单，易于计算。  \n","2. **解释性**：共轭先验有时可以提供直观的参数解释。  \n","3. **封闭形式的解决方案**：使用共轭先验可以使得后验分布有封闭形式的解，这对于抽样和推断非常有用。  \n"]},{"cell_type":"markdown","metadata":{"id":"D60DCF19AB2A4D3A9980AFBAF09D579B","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["\n","以正确率 $\\pi$ 为例，我们考虑以下情况：  \n","- $\\pi$ 的先验分布的概率密度函数（PDF）为 $f(\\pi)$。  \n","- 给定 $\\pi$ 下观测数据 $Y$ 的似然函数为 $L(\\pi|Y)$。  \n","\n","如果后验分布的PDF $f(\\pi|Y)$ 与先验分布属于同一模型家族，并且可以表示为：  \n","$$  \n","f(\\pi|Y) \\propto f(\\pi) \\cdot L(\\pi|Y)  \n","$$  \n","\n","那么，这个先验分布 $f(\\pi)$ 就是似然函数 $L(\\pi|Y)$ 的共轭先验。  \n"]},{"cell_type":"markdown","metadata":{"id":"2B61F04DDE9A46ACA7B6ACE2993D1A97","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["#### Beta-Binomial conjugate family  \n","在lec3 与 lec4 中，我们使用了$Beta$分布来反映我们对参数$\\pi$的先验认识。  \n","\n","我们知道若先验可以用$Beta(\\alpha,\\beta)$描述，收集到的数据可以用$Bin(n, \\pi)$描述，后验分布就可以用$Beta(\\alpha+y, \\beta+n-y)$描述。\n"]},{"cell_type":"markdown","metadata":{"id":"A29D00C2F607453EA61DE784A2593B30","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["**非共轭先验会带来什么**  \n","\n","让我们再回到随机点运动任务正确率的例子，考虑一个非共轭先验的状况  \n","\n","假如此时的先验分布$f(\\pi)$不是$Beta$分布，而是以下形式：  \n","$$  \n","\\begin{equation}  \n","f(\\pi)=e-e^\\pi\\; \\text{ for } \\pi \\in [0,1]  \n","\\end{equation}  \n","$$  \n","\n","![](https://www.bayesrulesbook.com/bookdown_files/figure-html/non-conjugate-1.png)  \n","> source: [Bayes Rules!#non-conjugate-1.png](https://www.bayesrulesbook.com)  \n"]},{"cell_type":"markdown","metadata":{"id":"C7F46DBBBFFD4D7585AAE4D5C521DB5C","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["\n","> 假设，数据为 50 次反应中有 10 次正确，那么在共轭先验$Beta(45,55)$的情况下，后验分布可以简洁地写为$Beta(55=45+10,95=55+40)$。  \n","> 但在非共轭先验的情况下，该后验分布的结果变得很繁琐。   \n","> 并且在非共轭先验的情况下，我们很难从这个后验表达式中获得类似的直觉。   \n","\n","##### <a id='a1'></a>[😂非共轭先验下，后验公式推导](#a1_) ：  \n","\n","此时似然函数仍是一个二项分布  \n","$$  \n","L(\\pi | y=10) = \\left(\\!\\begin{array}{c} 50 \\\\ 10 \\end{array}\\!\\right) \\pi^{10} (1-\\pi)^{40} \\; \\; \\text{ for } \\pi \\in [0,1]  \n","$$  \n","\n","后验可以写成：  \n","$$  \n","f(\\pi | y = 10) \\propto f(\\pi) L(\\pi | y = 10) = (e-e^\\pi) \\cdot \\binom{50}{10} \\pi^{10} (1-\\pi)^{40}  \n","$$  \n","\n","加入归一化常数后：  \n","\n","$$  \n","\\begin{equation}  \n","f(\\pi|y=10)= \\frac{(e-e^\\pi)  \\pi^{10} (1-\\pi)^{40}}{\\int_0^1(e-e^\\pi)  \\pi^{10} (1-\\pi)^{40}d\\pi}  \\; \\; \\text{ for } \\pi \\in [0,1]  \n","\\end{equation}  \n","$$"]},{"cell_type":"markdown","metadata":{"id":"B39B7A2DBA6B486990443C2A53B844CC","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["### 其他共轭先验 \n","除了 Beta-Binomial 和 Normal-Normal，贝叶斯推断中还有其他重要的共轭先验组合：  \n","\n","![Image Name](https://cdn.kesci.com/upload/skt7ayyug7.jpg?imageView2/0/w/750/h/640)  \n","> Source:https://blog.csdn.net/weixin_55252589/article/details/135380176  \n"]},{"cell_type":"markdown","metadata":{},"source":["这些共轭家族的主要优势在于，极大简化了计算。  \n","\n","然而，在实际应用中，许多复杂的统计模型并没有简单的共轭先验。对于这些模型，计算后验分布中的分母（归一化常数）变得非常困难，甚至无法通过解析方式计算出来，如之前提到的 <a id='a1_'></a>[Beta-Binomial 在非共轭先验下的后验公式推导](#a1)。  \n","\n","因此，贝叶斯推断在很长一段时期内，被困在共轭分布的范围内，导致其相对频率主义统计而言毫无优势可言。\n","\n","但是计算机的出现改变了这一状况，基于数值的方法和近似的方法也能够在非共轭情况下获得后验分布，完成贝叶斯推断，这是现代贝叶斯统计获得广泛应用的**前提**。\n","\n","> Note:在本课中，我们不对共轭先验进行进一步介绍，如果想深入了解上述内容，可访问我们去年 [lecture 5 的 jupyter notebook](https://gitee.com/hcp4715/PyBayesian/blob/master/Archive/2023/Notebooks/Lecture5.ipynb)以及本课件最后的附录。  "]},{"cell_type":"markdown","metadata":{"id":"D26765D5226848749E555A828CFC5E48","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["\n","在实际应用中，我们会遇到一些问题，比如：  \n","- 对于连续变量，在计算边缘似然$f(y)$时需要积分，然而某些情况下(例如，先验不是似然的共轭分布)，此时积分难以或无法计算。  \n","- 当参数或数据维度较高时，计算边缘似然$f(y)$的难度会变得非常困难。  \n","\n","**条件概率的计算**  \n","最初，当我们只有一个或少数几个参数时，条件概率的计算相对简单。例如，给定数据$y$，参数$\\theta_k$的条件概率可以表示为：  \n","$$  \n","f(\\theta_k | y) = \\frac{f(\\theta_k)L(\\theta_k | y)}{f(y)}  \n","$$  \n","\n","- 这里，$f(\\theta_k)$是参数$\\theta_k$的先验概率分布，  \n","- $L(\\theta_k | y)$是似然函数，而$f(y)$是数据的边缘似然。  \n","\n","\n","**连续变量的挑战**  \n","当参数$\\theta_k$是连续变量时，计算开始变得复杂。我们需要对$\\theta_k$的所有可能值进行积分来计算边缘似然$f(y)$：  \n","$$  \n","f(y) = \\int f(\\theta_k)L(\\theta_k | y) d\\theta_k  \n","$$  \n","- 这个积分可能已经比较难以计算，特别是当似然函数$L(\\theta_k | y)$的形式复杂时。  \n"]},{"cell_type":"markdown","metadata":{"id":"46359207B67F46EAA6379BC1DF5D041D","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["\n","\n","**多个连续变量的复杂性**  \n","当模型包含多个连续参数$\\theta_1, \\theta_2, ..., \\theta_k$时，计算边缘似然$f(y)$的分母变得更加复杂：  \n","$$  \n","f(y) = \\int_{\\theta_1}\\int_{\\theta_2} \\cdots \\int_{\\theta_k} f(\\theta)L(\\theta | y) d\\theta_k \\cdots d\\theta_2 d\\theta_1  \n","$$  \n","\n","挑战在于：  \n","- **计算量增加**：随着参数数量的增加，多变量积分的计算量呈指数级增长。  \n","- **解析解难以获得**：对于某些复杂的似然函数，可能不存在封闭形式的解析解，使得传统的积分方法无法直接应用。  \n","- **数值积分的限制**：即使使用数值积分方法，也可能因为维度灾难（curse of dimensionality）而面临计算上的困难，导致精度下降或计算成本过高。  \n","\n","\n"]},{"cell_type":"markdown","metadata":{"id":"6A13CAEDE4E94A3EB8336CCD72FA4A5E","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["## 对后验的近似(Approximating the Posterior)  \n","\n","“计算机的出现改变了这一状况，基于数值的方法和近似的方法也能够在非共轭情况下获得后验分布，完成贝叶斯推断，这是现代贝叶斯统计获得广泛应用的**前提**。”\n","  "]},{"cell_type":"markdown","metadata":{"id":"3DF186EC2DA14014B41C84DA458DEEB5","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["在解决计算问题时，现代方法主要分为两大类：数值方法和近似方法。  \n","- 数值方法通过精确的算法直接求解问题，包括迭代法、分解法等。  \n","- 而近似方法则通过牺牲一定的精度来换取计算效率，包括蒙特卡洛模拟、变分法、插值与拟合技术等。  \n","\n","本课中我们将介绍两种**近似方法**：  \n","1. 网格近似  \n","2. 马尔可夫链蒙特卡洛（MCMC）"]},{"cell_type":"markdown","metadata":{"id":"944199EC210C410A9E95B55E7FF65106","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["### Grid approximation 网格近似  \n","![Image Name](https://www.bayesrulesbook.com/bookdown_files/figure-html/unnamed-chunk-177-1.png)  \n","\n","\n","> * 想象有一张图像(图三)，但你不能完整地看到它。不过你可以从左到右每次取一个这个图像中的一个小格来观察它。  \n","> * 只要格子越细，最后组合在一起就会与完整的图片更近似  \n","\n","在网格近似中，后验分布$f(\\theta | y)$其实就是完整的图片。我们可以选择有限个$\\theta$，并观察对应的$f(\\theta | y)$，以此来近似完整的后验分布。  "]},{"cell_type":"markdown","metadata":{"id":"214A4D08ECB545AB9F33E584C6AD0BAC","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["（以一个参数为例）网格近似可以分为以下四个步骤：  \n","1. 选定一系列离散的$\\theta$值  \n","2. 计算每个$\\theta$值对应的先验分布$f(\\theta)$和似然函数$L(\\theta|y)$  \n","3. 对于所有的$\\theta$值，计算$f(\\theta)$与$L(\\theta|y)$二者的乘积并相加，再进行归一化  \n","4. 归一化后，根据$\\theta$值的后验概率分布，随机抽取$N$个$\\theta$值  \n","\n","我们以Beta-Binomial的例子来演示这四个步骤"]},{"cell_type":"markdown","metadata":{"id":"32FF7D2F9DAB42D2B550F9FF8BCF13D9","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["### A Beta-Binomial example  \n","\n","设定先验$\\pi$ 服从  \n","\n","$$  \n","\\pi \\sim \\text{Beta}(\\alpha = 70, \\beta = 30)  \n","$$  \n","\n","似然函数为：  \n","$$  \n","Y | \\pi  \\sim \\text{Bin}(n, \\pi)  \n","$$  \n","\n","> * 假设$\\pi$反映的是正确率，似然函数反映的则是在某个正确率下，总trial为100次时，正确次数的分布概率情况。  \n","> $$  \n","\\pi    \\sim \\text{Beta}(70, 30)  \n","> $$  \n","> $$  \n","Y|\\pi  \\sim \\text{Bin}(100, \\pi)  \n","$$  \n","> * 在观察到 $n$ 次事件中有 $Y = y$ 次目标事件后，$\\pi$的后验分布可以用Beta模型来描述，反映了先验（通过$\\alpha$和$\\beta$）和数据（通过y和n）的影响：  \n","> $$  \n","> \\pi | (Y = y) \\sim \\text{Beta}(\\alpha + y, \\beta + n - y)  \n","$$  \n"]},{"cell_type":"markdown","metadata":{"id":"99D567AB335B4B97891353842C8A57F0","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["假设正确次数为90，我们通过共轭先验的公式，可以直接计算出$Beta$后验分布的两个参数：  \n","- $Y + \\alpha = 90 + 70\\;\\;, \\;\\;\\;\\;\\;\\;\\;\\; n - Y + \\beta = 100 - 90 + 30$  \n","- $\\pi | (Y = 90) \\sim \\text{Beta}(160, 40)$\n","\n","这个结果可以用来对我们使用网格近似的后验进行验证。"]},{"cell_type":"markdown","metadata":{"id":"9A7EC1ECB84F482DBCEA7F139EE3F45E","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["**示例：网格近似估计后验分布**  \n","\n","现在我们暂时忘记后验的简便计算方法，使用网格近似来对后验分布进行估计。  \n","\n","**Step 1：** 首先，为了方便演示，我们将从0.5~1内的连续变量$\\pi$中取出11个值：$\\pi \\in \\{0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1\\}$"]},{"cell_type":"code","execution_count":1,"metadata":{"collapsed":false,"id":"EA15F9E54E55422A9C4D46AF916591A5","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[],"source":["import numpy as np\n","import scipy.stats as st\n","import matplotlib.pyplot as plt\n","import seaborn as sns\n","import pandas as pd"]},{"cell_type":"code","execution_count":3,"metadata":{"collapsed":false,"id":"1F4002AB7C1D46FDBE7FAFC877DB9D3E","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"name":"stdout","output_type":"stream","text":["从0.5~1内的连续变量π中取出11个值: [0.5  0.55 0.6  0.65 0.7  0.75 0.8  0.85 0.9  0.95 1.  ]\n"]}],"source":["pi_grid = np.linspace(0.5, 1, 11)\n","print(\"从0.5~1内的连续变量π中取出11个值:\", pi_grid)"]},{"cell_type":"markdown","metadata":{"id":"45F143B3055D48C1AC57C9D2E0D072B4","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["**Step 2 & 3:**  \n","\n","在每一个$\\pi$下，计算先验分布 $Beta(70, 30)$，与似然函数$Bin(100, \\pi)$ (Y=90)的乘积，计算总和并进行归一化"]},{"cell_type":"code","execution_count":4,"metadata":{"collapsed":false,"id":"3CB616E488544C44919F65D11F8CDAFA","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"data":{"image/png":"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","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["prior = st.beta.pdf(pi_grid, 70, 30)\n","likelihood = st.binom.pmf(90, 100, pi_grid)\n","posterior = prior * likelihood / np.sum(prior * likelihood)\n","\n","# 使用 plt.stem() 绘制垂直柱状图，表示在 pi_grid 上的 posterior 分布\n","plt.stem(\n","    pi_grid,\n","    posterior,  \n","    linefmt=\"black\",\n","    bottom=-1,\n",")\n","# 设置 y 轴范围在 0 到 1 之间\n","plt.ylim(0, 1)  \n","plt.xlabel(\"pi_grid\")  \n","plt.ylabel(\"Posterior\")  \n","# 去除图形的上方和右侧的边框\n","sns.despine()  "]},{"cell_type":"markdown","metadata":{"id":"3F6929946B0E41AB8D8BD7E148A73AFD","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["**Step 4：**  \n","\n","得到后验结果($\\pi$)的分布后，从这个分布中抽样10000次，对后验进行可视化。\n","\n","*由于$\\pi$的取值只在 $\\{0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1\\}$ 之中，从上图中可以看到，$\\pi = 0.8$ 的后验概率显著高于其他点，所以大多数样本会集中在 $\\pi = 0.8$ 附近。"]},{"cell_type":"code","execution_count":5,"metadata":{"collapsed":false,"id":"52574C3C32844AFCA09694409D35791E","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>pi_sample</th>\n","      <th>proportion</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>0.80</td>\n","      <td>0.7034</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>0.75</td>\n","      <td>0.1505</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>0.85</td>\n","      <td>0.1421</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>0.70</td>\n","      <td>0.0040</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["   pi_sample  proportion\n","0       0.80      0.7034\n","1       0.75      0.1505\n","2       0.85      0.1421\n","3       0.70      0.0040"]},"execution_count":5,"metadata":{},"output_type":"execute_result"}],"source":["np.random.seed(84735)\n","\n","#  从 posterior 分布中抽取 10000 个样本\n","posterior_sample = np.random.choice(\n","    pi_grid, \n","    size=10000,\n","    p=posterior,  \n","    replace=True,\n",")\n","\n","# 将抽取的样本存储在 DataFrame 中，列名为 \"pi_sample\"\n","posterior_sample = pd.DataFrame(\n","    {\"pi_sample\": posterior_sample}\n",")  \n","\n","# 对 posterior_sample 中的样本进行计数，并使用 normalize=True 将计数转换为相对频率\n","posterior_sample.value_counts(\n","    normalize=True\n",").reset_index()  "]},{"cell_type":"markdown","metadata":{"id":"2CB8D872F72244998F21CC46940A71A0","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["**抽样结果图示**  \n","\n","抽样结果显示，$\\pi$ 大多数集中在 0.80 附近，少部分在 0.75 和 0.85 附近。\\\n","接下来，我们可以将抽样得到的后验分布与理论上的 Beta 分布 $Beta(160, 40)$ 进行对比，以检验抽样的准确性。\n"]},{"cell_type":"code","execution_count":6,"metadata":{"collapsed":false,"id":"E372D89C727A42D983DAB30807A60C5E","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"data":{"image/png":"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Y4w5pc8xKyvLOJ3OcsdXs2bNjCSzf//+Cu1njDElJSWmU6dOJjU11axbt84sXbrUdOvWzUgyc+fOrbQNRo0aZZKTk82qVatMZmamWbx4sZk/f74xxpiVK1caSebzzz832dnZ7nYcNmyYCQsLM0OHDjU//PCD2bBhgzHGmJYtW5pnnnmm3OcRFRVlZs2aZTZt2mQefPBB4+fnZ9LT040xvx+rx7+fdevWGUkmMzPTFBQUmBkzZpiIiAiTnZ1tsrOzTX5+foV9newYNMaYSZMmmbCwMHP11VebDRs2mK+//tpER0eb+++/v9K2rOx3E4Cq+fxplyNFJUp66DOv7Dv9kYEKCax5E8bHx+uZZ56RZVlq166dNmzYoGeeeUZ//etftXnzZs2fP1/ffPONevfuLUl66623FB8fr3nz5unaa69VVlaWrrnmmnI9A2UaNWokSWratKn7r/NDhw5p+vTp+vLLL9WrVy/3OsuXL9c///lP9e3b173+I488ov79+1dZ+9NPP60JEybohhtukCQ9+eST+uqrrzRjxgy9+OKL7uXGjh1b7i/9E33++edav369MjMzFR8fL0n697//rY4dO2rVqlU655xzFBUVJam0q7yqLv85c+bot99+06pVq9zvvU2bNuXqHT58uEaOHClJGjdunL777js9/fTT7t4FqfSv8htvvFGSNGXKFD3//PNauXKlLr744irfQ3Uef/xx3XDDDXr44Yfd07p27er+96233ur+d0JCgp577jn16NFDBw8eVFhYWK0/x5kzZyohIaHC8fXkk09WWevnn3+ujIwMbdu2TXFxce42GDRoUJXrZGVlqVu3bkpJSZFU2qNQpuzURlRUVIXPLTQ0VP/6178UGBhY5bYl6dprr9Vtt90mSXr00Ue1ePFiPf/883rppZeqXU+SAgMDFRkZKcuyqj1VVJNjUCrt7XvttdcUHh4uSRo6dKi++OILPf744yetBTU0ObKaebn21QHbcdrFRueee265LvpevXpp8+bNKikpUUZGhvz9/dWzZ0/3/KioKLVr104ZGRmSpLvuukuPPfaY+vTpo0mTJmn9+vXV7i89PV1Hjx5V//793WM4wsLC9MYbb2jLli3lli37MqlMXl6edu3apT59+pSb3qdPH3dtNdmOJGVkZCg+Pt79S1+SkpKS1KBBgwrbqk5aWpq6devm/rKubD81qbdLly7uf4eGhio8PNx9GqQ20tLS1K9fvyrnr1u3ToMHD1bLli0VHh7uPjWRlZVV5To1+RwzMjIqPb6qk5GRoRYtWriDR03W+dvf/qZ33nlHycnJGj9+vFasWFHt8mU6d+580uBR2f579erl0XFREzU9Blu1auUOHpIUExNzSscGgN/5fM9HcICf0h8Z6LV91xVz3NiPE6eXfaHcdtttGjhwoD755BMtWrRIU6dO1bRp03TnnXdWuq7L5ZIkffLJJ2revHm5eU6ns9zPoaGhJ63xxLENx9dW0+1Utk5106sSHBx80mVqUu+JA2Ity3K324kcDkeFz6moqKjGdR06dEgDBgzQgAED9Oabb6pJkybKysrSwIEDVVhYWOV6Nfkcqzp+qlPZOif7DAYNGqTt27frk08+0eeff65+/fpp1KhRevrpp6tdrybHV1XKaiq7ueDxdZ/Y/jVR02PQk2MDgGd8vufDsiyFBPp75eXpXQ2/++67Cj+XPQsiKSlJxcXF5QZM7t27Vz/99JM6dOjgnhYfH68RI0boww8/1N13361Zs2ZJkvuvyuOf9JuUlCSn06msrCy1adOm3Ov4v/pOJiIiQrGxsVq+fHm56StWrChXW00kJSUpKytLO3bscE9LT09Xbm6uR9vq0qWL0tLStG/fvkrnd+jQoU7qPV6TJk2Un5+vQ4cOuaedeFlply5dqrxE+ccff9SePXv0xBNP6Pzzz1f79u0r/CVd288xKSmp0uOrOmWfxa5du9zTvv3222rXkUrbYfjw4XrzzTc1Y8YMvfzyy1XW7qnK3kP79u3d+5VKB6WWObH9AwMDT7r/ujoGAdSez/d8+JIdO3Zo3LhxuuOOO7R27Vo9//zzmjZtmiQpMTFRgwcP1l//+lf985//VHh4uCZOnKjmzZtr8ODBkkrHUwwaNEht27bV/v379eWXX7p/WbZs2VKWZenjjz/WJZdcouDgYIWHh+uee+7R3//+d7lcLp133nnKy8vTihUrFBYWpmHDhtW49nvvvVeTJk3SWWedpeTkZM2ePVtpaWl66623PGqDiy66SF26dNFNN92kGTNmqLi4WCNHjlTfvn1PesrmeDfeeKOmTJnivooiJiZG69atU2xsrHr16qV7771X1113nc4++2z169dPH330kT788EN9/vnnHtV7vJ49eyokJET333+/7rzz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/qFDhzRu3DitWrVKX3zxhRwOh6666iq5XK5q23PmzJkaNWqUbr/9dm3YsEHz58+v8MTdhx9+WNddd53Wr1+vSy65RDfddJP27dtX7fsBAFuZ00xubq6RZHJzcyvMO3LkiElPTzdHjhypuOKkCHtfHurbt6/p0KGDcblc7mkTJkwwHTp0MMYY89NPPxlJ5ptvvnHP37NnjwkODjb/+c9/jDHGdO7c2UyePLnS7X/11VdGktm/f7972sGDB01QUJBZsWJFuWX/8pe/mBtvvLHcevPmzSvfnJMmma5du7p/jo2NNY8//ni5Zc455xwzcuRIY4wxmZmZRpKZMWNGte2waNEi4+fnZ7KystzTNm7caCSZlStXGmOMWbdunZFkMjMzq9zOzJkzTVRUVLljYdasWUaSWbdunUfvLSYmxjzxxBPun4uKikxcXJwZPHhwlfuv7rP43//9XzNgwIBy03bs2GEkmU2bNlW6zu7du40ks2HDBmNM1e0ZGxtrHnjggSrrkmQefPBB988HDx40lmWZTz/9tMp1cOqq/d2EqtXh71j4Fno+bHTuuefKsiz3z7169dLmzZtVUlKijIwM+fv7q2fPnu75UVFRateunTIyMiRJd911lx577DH16dNHkyZN0vr166vdX3p6uo4ePar+/fu7xzmEhYXpjTfeKNfFL0kpKSlVbicvL0+7du1Snz59yk3v06ePu7aabEeSMjIyFB8fX643IykpSQ0aNKiwreps2rRJXbp0UVBQkHtajx49Kl22uppyc3OVnZ2tXr16uaf5+/uf9H1U91msWbNGX331Vbk2b9++vSS5233Lli0aMmSIEhISFBERodatW0sqPSVVVe27d+/Wrl271K9fv2prO753JzQ0VOHh4dq9e3e16wCAnQgfpwlTxRgDY4w7sNx2223aunWrhg4dqg0bNiglJUXPP/98ldss68L/5JNPlJaW5n6lp6eXG/chlX5JnczxwenE2mq6ncrWqW66J9upqg1r8t48Vd1n4XK5dPnll5dr87S0NG3evFkXXHCBJOnyyy/X3r17NWvWLH3//ff6/vvvJUmFhYVV1h4cHFyj2k4clGpZVoXTOQDgTYQPG3333XcVfk5MTJSfn5+SkpJUXFzs/hKSpL179+qnn35Shw4d3NPi4+M1YsQIffjhh7r77rs1a9YsSVJgYKCk0sGTZZKS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bdr68OHDcjjKf035+flJ+v2vc5war30P1utwVpuVXcb1yiuvmPT0dDN27FgTGhpqtm3bZowxZuLEiWbo0KHu5csuMfr73/9u0tPTzSuvvMKltjXgaTvPmTPH+Pv7mxdffNFkZ2e7XwcOHPDWW/AJnrbzibjapWY8bef8/HwTFxdn/vznP5uNGzeapUuXmsTERHPbbbd56y34DE/bevbs2cbf39+89NJLZsuWLWb58uUmJSXF9OjRw1tv4bSXn59v1q1bZ9atW2ckmenTp5t169a5L2c+Xb4Hz6jwYYwxL774omnZsqUJDAw0Z599tlm6dKl73rBhw0zfvn3LLb9kyRLTrVs3ExgYaFq1amVmzpxpc8W+yZN27tu3r5FU4TVs2DD7C/cxnh7PxyN81Jyn7ZyRkWEuuugiExwcbOLi4sy4cePM4cOHba7aN3na1s8995xJSkoywcHBJiYmxtx0001m586dNlftO7766qtqf9+eLt+DljH0XQEAAPucMWM+AACAbyB8AAAAWxE+AACArQgfAADAVoQPAABgK8IHAACwFeEDAADYivABAABsRfgAAAC2InwAAABbET4AAICtCB8AAMBW/x9hMQv/Yd6NrwAAAABJRU5ErkJggg==","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["x_beta = np.linspace(0, 1, 10000)  # 生成10000 个点，范围在 [0, 1] 之间\n","\n","y_beta = st.beta.pdf(x_beta, 160, 40)  # 生成 Beta(160,40)\n","\n","# 绘制共轭方法计算得到的后验 beta(160,40)\n","plt.plot(x_beta, y_beta, label=\"posterior of conjucated distribution\") \n","\n","# 绘制网格方法抽样后得到的结果\n","plt.hist(\n","    posterior_sample[\"pi_sample\"],  \n","    density=True,\n","    label = \"posterior of grid search\"\n",")\n","plt.legend()\n","\n","sns.despine()"]},{"cell_type":"markdown","metadata":{"id":"57234C74CB76467BADAE391CF3861ED8","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["**增加网格数**  \n","\n","* 这个结果当然过度简化了后验分布，还记得我们刚刚提到，只要取的网格越多，对后验的估计会更准确。  \n","\n","* 那么，现在$\\pi$不取11个值，而是在0~1之间取101个值$\\pi \\in \\{0, 0.01, 0.02, \\ldots, 0.99, 1\\}$  \n","\n","* 同样的，我们执行上述四个步骤："]},{"cell_type":"code","execution_count":7,"metadata":{"collapsed":false,"id":"5182B6F140FF44F88944716D13335C20","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[],"source":["# 生成一个 101 个点，范围在 [0, 1] 之间\n","pi_grid = np.linspace(0, 1, 101)  \n","# 生成 Beta(70,30)\n","prior = st.beta.pdf(pi_grid, 70, 30)  \n","\n","# 生成二项分布, 参数为 n=100（总试验次数），k=90（正确次数），以及 pi_grid 中的每个概率值\n","likelihood = st.binom.pmf(\n","    90, 100, pi_grid\n",")  \n","\n","# 计算后验概率，即先验概率和似然函数的乘积，然后除以归一化常数（分母和）\n","posterior = (\n","    prior * likelihood / np.sum(prior * likelihood)\n",")  "]},{"cell_type":"code","execution_count":8,"metadata":{"collapsed":false,"id":"DA9E0D69DE784D6495540C85B6F9EEA4","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"data":{"image/png":"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","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["# 画图\n","plt.stem(pi_grid, posterior, bottom=-1)\n","plt.ylim(0, 0.3)\n","sns.despine()"]},{"cell_type":"markdown","metadata":{"id":"9B41522229D24B1ABAE3389BECB790A7","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["可以看到，在此次的抽样中，$\\pi$的取值更加多样"]},{"cell_type":"code","execution_count":10,"metadata":{"collapsed":false,"id":"5806E5E8692E4E458CCDBB6C9C5663D5","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>pi_sample</th>\n","      <th>proportion</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>0.80</td>\n","      <td>0.1395</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>0.81</td>\n","      <td>0.1364</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>0.79</td>\n","      <td>0.1268</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>0.82</td>\n","      <td>0.1178</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>0.78</td>\n","      <td>0.1058</td>\n","    </tr>\n","    <tr>\n","      <th>5</th>\n","      <td>0.83</td>\n","      <td>0.0846</td>\n","    </tr>\n","    <tr>\n","      <th>6</th>\n","      <td>0.77</td>\n","      <td>0.0748</td>\n","    </tr>\n","    <tr>\n","      <th>7</th>\n","      <td>0.84</td>\n","      <td>0.0533</td>\n","    </tr>\n","    <tr>\n","      <th>8</th>\n","      <td>0.76</td>\n","      <td>0.0514</td>\n","    </tr>\n","    <tr>\n","      <th>9</th>\n","      <td>0.75</td>\n","      <td>0.0303</td>\n","    </tr>\n","    <tr>\n","      <th>10</th>\n","      <td>0.85</td>\n","      <td>0.0290</td>\n","    </tr>\n","    <tr>\n","      <th>11</th>\n","      <td>0.74</td>\n","      <td>0.0171</td>\n","    </tr>\n","    <tr>\n","      <th>12</th>\n","      <td>0.86</td>\n","      <td>0.0128</td>\n","    </tr>\n","    <tr>\n","      <th>13</th>\n","      <td>0.73</td>\n","      <td>0.0083</td>\n","    </tr>\n","    <tr>\n","      <th>14</th>\n","      <td>0.87</td>\n","      <td>0.0040</td>\n","    </tr>\n","    <tr>\n","      <th>15</th>\n","      <td>0.72</td>\n","      <td>0.0031</td>\n","    </tr>\n","    <tr>\n","      <th>16</th>\n","      <td>0.71</td>\n","      <td>0.0022</td>\n","    </tr>\n","    <tr>\n","      <th>17</th>\n","      <td>0.88</td>\n","      <td>0.0013</td>\n","    </tr>\n","    <tr>\n","      <th>18</th>\n","      <td>0.70</td>\n","      <td>0.0013</td>\n","    </tr>\n","    <tr>\n","      <th>19</th>\n","      <td>0.69</td>\n","      <td>0.0001</td>\n","    </tr>\n","    <tr>\n","      <th>20</th>\n","      <td>0.89</td>\n","      <td>0.0001</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["    pi_sample  proportion\n","0        0.80      0.1395\n","1        0.81      0.1364\n","2        0.79      0.1268\n","3        0.82      0.1178\n","4        0.78      0.1058\n","5        0.83      0.0846\n","6        0.77      0.0748\n","7        0.84      0.0533\n","8        0.76      0.0514\n","9        0.75      0.0303\n","10       0.85      0.0290\n","11       0.74      0.0171\n","12       0.86      0.0128\n","13       0.73      0.0083\n","14       0.87      0.0040\n","15       0.72      0.0031\n","16       0.71      0.0022\n","17       0.88      0.0013\n","18       0.70      0.0013\n","19       0.69      0.0001\n","20       0.89      0.0001"]},"execution_count":10,"metadata":{},"output_type":"execute_result"}],"source":["np.random.seed(84735)\n","\n","# 从 posterior 分布中抽取 10000 个样本\n","posterior_sample = np.random.choice(\n","    pi_grid,  \n","    size=10000,  \n","    p=posterior,  \n","    replace=True,\n",")  \n","\n","# 将抽取的样本存储在 DataFrame 中，列名为 \"pi_sample\"\n","posterior_sample = pd.DataFrame(\n","    {\"pi_sample\": posterior_sample}\n",")  \n","\n","# 对 posterior_sample 中的样本进行计数，并使用 normalize=True 将计数转换为相对频率\n","posterior_sample.value_counts(\n","    normalize=True\n",").reset_index()  \n"]},{"cell_type":"markdown","metadata":{"id":"E9EC204408BF416A9548227E807A849B","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["**抽样结果图示**  \n","\n","对比一下抽样得到的后验分布图 和 实际的后验分布$Beta(110, 30)$  \n","\n","相比于上一次，这一次的结果更加接近真实的后验分布"]},{"cell_type":"code","execution_count":11,"metadata":{"collapsed":false,"id":"2C6A4C9EEA78452F9A6BD59E3A9331E2","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"data":{"image/png":"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kiRh3bp1SElJgdlsxpYtW2oMTTidTjz33HNo164dzGYzkpOTsXbtWuXxI0eOQJIkfPzxxxgyZAhCQkKwdOnSWq9FdnY2Ro4ciYiICERFReHOO+/EyZMnAQDvv/8++vTpAwDo3LkzJEmqc6G6H3/8EcnJyQgJCUFKSgpWrVoFSZKQnp7u1e/mcDgwZcoU5X2ZOnVqgwvp1fVeyDIyMnDDDTcgIiICrVu3xujRo5GXl6c8vnbtWlx55ZXKOW+66SYcOnTIo+v53nvvoVevXjCbzYiPj1e2nJfl5eXh1ltvRVhYGLp27YrVq1fX+7sQ6SW3qtcjwRIKSZJqPUap+2D4aFYYPnxoyZIlCAwMxC+//II33ngDr732Gv79738rj48bNw47duzA6tWr8dNPP0EIgRtuuEH5i3fChAmw2+3YvHkz9u7dizlz5iAiIgKJiYn47LPPALh2Ys3NzcXrr78OAJg5cyYWL16MBQsW4LfffsPjjz+O++67D5s2bXJr29SpU5GWlobMzEz07du3Rttff/11vPrqq3jllVewZ88eDBs2DDfffLNbOAKAadOmYdKkScjMzMSwYcNqvI4QArfccgvOnDmDTZs2YcOGDTh06BDuuusuAMBdd92Fb775BgCwbds25Obm1rqxW1FREUaMGIE+ffpg165deP755zFt2rRar3tDv9urr76K9957D++++y62bt2KM2fONLi8el3vBQDk5uZi8ODBSE5Oxo4dO7B27VqcPHkSd955p/L8kpISTJkyBdu3b8e3334Lk8mEW2+9FU6n+7j2+ddzwYIFmDBhAh566CHs3bsXq1evrrHj7uzZs3HnnXdiz549uOGGGzBq1CicOXOm3t+HSA8nba6VTdtY6t4JuG1V+GDPR/PSfGo+DCAxMRGvvfYaJElC9+7dsXfvXrz22mt48MEHceDAAaxevRo//PADBg50bSn94YcfIjExEatWrcIdd9yB7Oxs3H777W49A7LY2FgAQKtWrZSaj5KSEsydOxffffcdBgwYoDxn69at+Ne//oXBgwcrz3/uuedw3XXX1dn2V155BdOmTcPdd98NAJgzZw6+//57zJs3D2+99ZZy3GOPPYbbbrutztf55ptvsGfPHmRlZSmh4j//+Q969eqF7du347LLLlOGRFq2bIk2bdrU+joffvghJEnCokWLEBISgqSkJBw7dgwPPvhgjWMb+t3mzZuHGTNm4PbbbwcAvPPOO1i3bl2dxwOo971YsGABLrnkErz00kvKfe+99x4SExOxf/9+dOvWTTmX7N1330WrVq2QkZGB3r17K/effz1feOEFPPHEE5g8ebJy32WXXeb2WuPGjcM999wDAHjppZcwf/58bNu2DX/605/q/Z2IfO3EZ9MB3IM2WauA1Jp/rABA/MBtAKAswU7NA3s+fOiKK65w61ocMGAADhw4AIfDgczMTAQGBqJ///7K43FxcejevTsyMzMBAJMmTcILL7yAQYMGYdasWdizZ0+958vIyEBZWRmuu+46REREKLcPPvjArYsfAFJSUup8HZvNhuPHj2PQoEFu9w8aNEhpmyevAwCZmZlITEx0681ISkpCdHR0jdeqz759+9C3b1+EhFT/xXT55ZfXemx9bbJarcjNzVXCGQAEBgY2+HvU917s3LkT33//vds179GjBwAo1/3QoUO499570blzZ0RFRaFTp04AXKGmrrafOnUKx48fx7XXXltv287t3QkPD0dkZCROnTpV73OI9HBCuP5oai3V3TPXMsr13/ipIrtP2kS+wfDhJ+qqMRBCKIHlgQcewOHDhzF69Gjs3bsXKSkpmD9/fp2vKXfhf/XVV0hPT1duGRkZbnUfgOtLqiHnj8me2zZPX6e259R3vzevU9c19OR381Z974XT6cSIESPcrnl6ejoOHDiAq6++GgAwYsQI5OfnY9GiRfjll1/wyy+/AADKy8vrbHtoaKhHbQsKct8fQ5KkGsM5RP7ghIgBAMTXEz5aRboKURk+mheGDx/6+eefa/zctWtXBAQEICkpCZWVlcqXEADk5+dj//796Nmzp3JfYmIixo8fj88//xxPPPEEFi1aBAAIDg4G4CqelCUlJcFsNiM7OxtdunRxu9VWR1GXqKgoJCQkYOvWrW73//jjj25t80RSUhKys7ORk5Oj3JeRkQGr1erVa/Xo0QN79uyB3V79D9KOHTu8agsAWCwWxMfHu703lZWV2LlzZ4PPreu9uOSSS/Dbb7+hY8eONa57eHg48vPzkZmZiZkzZ+Laa69Fz549UVBQ0OD5IiMj0bFjR3z77bde/55E/qi656Puz78cPk7bOOzSnDB8+FBOTg6mTJmCffv2Yfny5Zg/f74ydt+1a1eMHDkSDz74ILZu3Ypff/0V9913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","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["# 生成一个 10000 个点，范围在 [0, 1] 之间\n","x_beta = np.linspace(0, 1, 10000)\n","# 生成Beta(160,40)  \n","y_beta = st.beta.pdf(x_beta, 160, 40)  \n","\n","# 绘制共轭方法计算得到的后验 beta(160,40)\n","plt.plot(x_beta, y_beta, label=\"posterior of conjucated distribution\")  \n","\n","# 绘制网格方法抽样后得到的结果\n","plt.hist(\n","    posterior_sample[\"pi_sample\"],  \n","    density=True,\n","    label = \"posterior of grid search\"\n",")\n","plt.legend()\n","\n","sns.despine()"]},{"cell_type":"markdown","metadata":{"id":"1A3AB89ACF64480CAB66FF1CF020FCD9","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["### 练习  \n","\n","> 📃以**Normal-Normal模型**为例来练习网格近似  \n","\n","在 Normal-Normal 模型 中，观测数据和参数之间的关系是通过正态分布来表示的。  \n","\n","**模型设定：**  \n","- 假设 $\\mu$ 是参与者在随机点运动任务中的**平均反应时间**（单位：ms）, $\\sigma$ 是参与者在随机点运动任务中的**标准差**（单位：ms）。  \n","- 先验分布设为正态分布，我们假设参与者的平均反应时间约为 500 ms，标准差为 100 ms。\n","  - 对于 $\\mu$，其先验分布为 $\\mu \\sim \\text{Normal}(500, 200)$。  \n","  - 对于 $\\sigma$，其先验分布为 $\\sigma \\sim \\text{Normal}(100, 50)$。  \n","- 观测数据 $Y$ 表示参与者在实验中实际的反应时间。假设我们收集了被试完成 10 次实验的反应时间。  \n","  - 例如 [691., 582., 628., 729., 699., 472., 626., 538., 542., 583.] ms。  \n","\n","目标：我们的目标是通过**网格近似法**计算 $\\mu$ 的后验分布。  \n","\n","$$  \n","\\begin{equation}  \n","\\begin{split}  \n","Y_i|\\mu & \\stackrel{ind}{\\sim} \\text{Normal}(\\mu, \\sigma^2) \\\\  \n","\\mu & \\sim \\text{Normal}(\\mu_0, \\sigma_0^2) . \\\\  \n","\\sigma & \\sim \\text{Normal}(\\mu_1, \\sigma_1^2) . \\\\  \n","\\end{split}  \n","\\tag{1}  \n","\\end{equation}  \n","$$  \n","\n","<div style=\"padding-bottom: 30px;\"></div>"]},{"cell_type":"markdown","metadata":{},"source":["首先，我们仅考虑只有一种参数的情况。 即假设我们已知 $\\sigma$ 为 80， 而 $\\mu$ 未知。\n","\n","$\\mu$ 的先验为正态分布，即 $N(500, 200)$。"]},{"cell_type":"code","execution_count":12,"metadata":{"collapsed":false,"id":"BDA78B7117704F1EA41A23FD41AB8E79","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"skip"},"tags":[],"trusted":true},"outputs":[],"source":["import numpy as np\n","import scipy.stats as st\n","import matplotlib.pyplot as plt\n","\n","# 生成模拟数据\n","np.random.seed(0)\n","data = np.random.normal(loc=550, scale=80, size=10)"]},{"cell_type":"code","execution_count":11,"metadata":{"collapsed":false,"id":"775B40D796CC4E87A6CDAD8F71CEE9C3","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"fragment"},"tags":[],"trusted":true},"outputs":[{"data":{"text/plain":["array([691., 582., 628., 729., 699., 472., 626., 538., 542., 583.])"]},"execution_count":11,"metadata":{},"output_type":"execute_result"}],"source":["# 展示数据\n","data.round(0)"]},{"cell_type":"code","execution_count":12,"metadata":{"collapsed":false,"id":"4B7C7680A6464BDE8A4B50BFCADE1A7B","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[],"source":["##---------------------------------------------------------------------------\n","#                            设置网格范围和步长\n","#                            1. 假设被试反应的反应时范围为 200 到 800 ms\n","#                            2. 设定网格步长为10 (后续可以修改为20,50,100等)\n","# ---------------------------------------------------------------------------\n","# theta_grid = np.linspace(..., ..., 20) "]},{"cell_type":"code","execution_count":13,"metadata":{"collapsed":false,"id":"777BC9971B274544B90284D22B1470A0","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[],"source":["##---------------------------------------------------------------------------\n","#                            计算先验概率\n","#                            1. 设定先验概率服从正态分布\n","#                            2. 先验均值为500, 标准差为100\n","# ---------------------------------------------------------------------------\n","# prior_mean = ... \n","# prior_std = ... \n"]},{"cell_type":"code","execution_count":14,"metadata":{"collapsed":false,"id":"8F451BC2E7AF4CFDA6E63A49ABA38D99","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[],"source":["##---------------------------------------------------------------------------\n","#                            计算似然函数\n","# ---------------------------------------------------------------------------\n","# likelihood = ..."]},{"cell_type":"code","execution_count":15,"metadata":{"collapsed":false,"id":"3FFBA0188EA04985A6341858B4779B19","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[],"source":["##---------------------------------------------------------------------------\n","#                            计算后验\n","# ---------------------------------------------------------------------------\n","# posterior_prob = ...\n","\n","# 归一化后验概率"]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":false,"id":"F705AED6680449929FA63C90566576F5","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[],"source":["##---------------------------------------------------------------------------\n","#                            计算找到后验概率的最大值对应的参数\n","# ---------------------------------------------------------------------------\n","# max_posterior = ...\n","print(\"最大后验概率对应的参数值：\", theta_grid[max_posterior])\n"]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":false,"id":"928E5542776A42519FA5AD09AD0C04E6","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[],"source":["# 绘制结果\n","plt.plot(theta_grid, prior_prob / prior_prob.sum(), color=\"orange\", label=\"prior\")\n","plt.plot(theta_grid, posterior_prob, label=\"posterior of grid method\")\n","plt.vlines(data.mean(), 0, posterior_prob.max(), color=\"red\", label=\"true data\")\n","plt.legend()\n","plt.title(\"Grid search posterior distribution\")\n","plt.xlabel(\"$\\mu$\")\n","plt.ylabel(\"Density\")\n","plt.show()"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["##---------------------------------------------------------------------------\n","#                            通过共轭方法计算后验概率 (具体算法见补充材料)\n","# ---------------------------------------------------------------------------\n","x = np.linspace(200,800,10000)\n","prior_mean = 500\n","prior_variance = 200**2\n","sigma2 = 80**2\n","n = len(data)  # 观测数据的数量\n","posterior_mean = (prior_mean / prior_variance + data.sum() / sigma2) / (1 / prior_variance + n / sigma2)\n","posterior_std = np.sqrt((1 / prior_variance + n / sigma2)**-1)\n","posterior_conjucate = st.norm.pdf(x, loc=posterior_mean, scale=posterior_std)\n","\n","# 绘制结果\n","plt.plot(x, posterior_conjucate, label=\"posterior of conjucated method\")\n","plt.vlines(data.mean(), 0, posterior_conjucate.max(), color=\"red\", label=\"true data\")\n","plt.legend()\n","plt.title(\"Conjucated posterior distribution\")\n","plt.xlabel(\"$\\mu$\")\n","plt.ylabel(\"Density\")\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"50B0E12ACB3B49C48D5C515C832DDAFA","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["上面只考虑了估计 $\\mu$ 参数，下面我们增加难度，增加考虑估计 $\\sigma$ 参数。\n","\n","我们假设 $\\mu$ 和 $\\sigma$ 的先验服从正态分布，即：\n","  - 对于 $\\mu$，其先验分布为 $\\mu \\sim \\text{Normal}(500, 200)$。  \n","  - 对于 $\\sigma$，其先验分布为 $\\sigma \\sim \\text{Normal}(100, 50)$。  "]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":false,"id":"301B12D0E4BB4892ABA5F3BD514C5B9B","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[],"source":["##---------------------------------------------------------------------------\n","#                            设置网格范围和步长\n","#                            1. 假设被试反应的反应时范围为 200 到 800 ms\n","#                            2. 假设被试反应时的方差范围为 20 到 200\n","# ---------------------------------------------------------------------------\n","n_step = 20\n","# mean_grid = ...  请补充...\n","# std_grid = ...   请补充...\n","\n","mean_grid = np.linspace(200, 800, n_step)\n","std_grid = np.linspace(20, 200, n_step)\n","mean_mesh, std_mesh = np.meshgrid(mean_grid, std_grid)"]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":false,"id":"A84460FF1A3446549B898C101B3B34A0","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[],"source":["##---------------------------------------------------------------------------\n","#                            计算先验概率\n","#                            1. 设定先验概率服从正态分布\n","#                            2. 先验均值为500，标准差为100\n","# ---------------------------------------------------------------------------\n","\n","# prior_mean = ...        \n","# prior_std = ...         \n","\n","# 显示 prior_grid 的形状\n","prior_grid.shape"]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":false,"id":"5AC11F7ABB2F40869CA8D44571E261DA","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[],"source":["##---------------------------------------------------------------------------\n","#                            计算似然函数\n","#                            1. 先计算一种参数条件下的似然值\n","#                            2. 通过for循环计算所有参数条件下的似然值，并储存在likelihood_grid中\n","# ---------------------------------------------------------------------------\n","# likelihood_single = ...\n","# likelihood_grid = np.zeros((n_step, n_step))\n","\n","likelihood_grid.shape"]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":false,"id":"F59B48A69D194AFAB53867B499EC6637","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[],"source":["##---------------------------------------------------------------------------\n","#                            计算grid的后验概率\n","# ---------------------------------------------------------------------------\n","# posterior_grid = ...\n","\n","posterior_grid /= posterior_grid.sum()  # 归一化\n","\n","# 显示 posterior_grid 的形状\n","posterior_grid.shape"]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":false,"id":"501C608DF2854BC49748CC6A0876C7D7","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[],"source":["##---------------------------------------------------------------------------\n","#                            计算找到后验概率的最大值对应的参数\n","# ---------------------------------------------------------------------------\n","# max_idx = ...\n","# estimated_mean = ...\n","# estimated_std = ...\n","\n","print(f\"Estimated Mean: {estimated_mean}\")\n","print(f\"Estimated Standard Deviation: {estimated_std}\")"]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":false,"id":"C04DC041A06241F8A2FAC6202F4CB568","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":true,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[],"source":["# 绘制后验概率分布图\n","plt.figure(figsize=(8, 6))\n","\n","plt.scatter(prior_mean_mean, prior_std_mean, color=\"orange\", label=\"prior\")\n","plt.scatter(data.mean(), data.std(), color=\"black\", label=\"data\")\n","plt.scatter(estimated_mean, estimated_std, color=\"red\", label=\"max_posterior\")\n","\n","plt.xlabel(\"Mean\")\n","plt.ylabel(\"Standard Deviation\")\n","plt.title(\"Posterior Distribution\")\n","\n","plt.xlim(400, 800)\n","plt.ylim(20, 200)\n","plt.legend()\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"EBEF910533C24CEBB4C943BA20D214B3","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["### 网格近似的局限性  \n","\n","😎或许你也注意到了，上述模型还是只有一到俩个参数的情况  \n","\n","当模型的参数越来越多时，网格近似就会遇到“维数灾难问题”  \n","\n","在这里我们只需要简单理解为：当模型参数越来越多时，网格近似需要的计算成本也越来越高。"]},{"cell_type":"markdown","metadata":{"id":"CED0175C792D4E79893138110E708780","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["## Markov chains via PyMC  \n","\n","**“Markov chain Monte Carlo(MCMC)”**  \n","\n","在计算具有多个参数的后验分布时，有一种有效的方法叫做马尔科夫链蒙特卡洛(MCMC)，可以用于模拟和**近似**后验概率分布  \n","\n","- 前一个MC中的Markov 来源于一个俄国数学家的名字 Andrey Markov。  \n","  - 他研究并提出一种数学方法，被命名为马尔科夫链。用于描述状态空间中经过从一个状态到另一个状态的转换的随机过程。  \n","  - 该过程要求具备 **“无记忆性”**，即下一状态的概率分布只能由当前状态决定，在时间序列中它前面的事件均与之无关。  \n","  - 马尔可夫链在机器学习和深度学习中非常广泛，例如分层隐马尔可夫模型HMM (Hidden Markov Model)和卡尔曼滤波模型。  \n","- 而后一个MC (Monte Carlo)则是一个赌场的名字。据说来自于 20 世纪 40 年代绝密核武器项目的，其中斯坦尼斯拉夫-乌拉姆、约翰-冯-诺伊曼和他们在洛斯阿拉莫斯国家实验室的合作者使用马尔可夫链来模拟和更好地理解中子旅行现象（Eckhardt，1987）。洛斯阿拉莫斯团队将他们的工作称为 \"蒙特卡洛\"，据说这一选择是受到法国里维埃拉富丽堂皇的蒙特卡洛赌场的启发。  \n","\n","\n","<table>  \n","    <tr>  \n","        <td><img src=\"https://cdn.kesci.com/upload/s2ld84yupl.jpg?imageView2/0/w/320/h/320\" alt=\"图片1\"></td>  \n","        <td><img src=\"https://cdn.kesci.com/upload/s2ld8ix3d7.jpg?imageView2/0/w/320/h/320\" alt=\"图片2\"></td>  \n","    </tr>  \n","</table>  \n"]},{"cell_type":"markdown","metadata":{"id":"919A8AAD32B14099BE0FA76AA37A29E4","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["\n","**MCMC的采样特点**  \n","\n","1. 和网格法类似，MCMC并不会从后验分布$f(\\theta|y)$中直接采样  \n","2. 并且区分与网格法，MCMC的样本不是互相独立的 ———下一个样本值依赖于上一个样本值  \n","\n","![](https://pic2.zhimg.com/80/v2-696651b37f2dc6a472c314f1ba78194d_1440w.webp)  \n","> source: https://zhuanlan.zhihu.com/p/250146007  \n"]},{"cell_type":"markdown","metadata":{"id":"703FC0BAF18D45C89E3D5A447C700031","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["假设后验分布仍是关于$\\theta$的分布，$\\left\\lbrace \\theta^{(1)}, \\theta^{(2)}, \\ldots, \\theta^{(N)} \\right\\rbrace$ 构成了一个长度为N的**马尔科夫链**  \n","\n","- ——> 其中，$\\theta^{(2)}$ 的结果依赖于 $\\theta^{(1)}$，$\\theta^{(3)}$ 的结果依赖于 $\\theta^{(2)}$.... $\\theta^{(3)}$ 的结果依赖于 $\\theta^{(i+1)}$ 的结果依赖于 $\\theta^{(i)}$  \n","- ——> 总的来说，$\\theta^{(i+1)}$ 的结果依赖于 $\\theta^{(i)}$和收集到的数据y  \n","\n","$$  \n","f\\left(\\theta^{(i + 1)} \\; | \\; \\theta^{(1)}, \\theta^{(2)}, \\ldots, \\theta^{(i)}, y\\right) = f\\left(\\theta^{(i + 1)} \\; | \\; \\theta^{(i)}, y\\right)  .  \n","$$  \n","\n","> 注意：$\\theta^{(i+1)}$ 依赖于 $\\theta^{(i)}$，而 $\\theta^{(i)}$ 又依赖于$\\theta^{(i-1)}$  \n","> 然而，$\\theta^{(i+1)}$ 独立于 $\\theta^{(i-1)}$，这是马尔科夫链 \"**无记忆性**\"的特点。"]},{"cell_type":"markdown","metadata":{"id":"C07E66F6C5C044BAB2D54A6D3077E91C","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["\n","**好消息是：**  \n","\n","我们无需从零开始编写这些复杂的算法。目前已经有不少高效的工具，它们可以帮助我们轻松实现复杂的MCMC采样的问题，从而帮助我们实现复杂的贝叶斯模型。  \n","\n","**概率编程语言：**  \n","\n","这些工具被统称为**概率编程语言（Probability Programming Languages）**，简称PPL。它们包括但不限于以下几种：  \n","\n","\n","- [**Stan**](https://mc-stan.org/)  \n","\n","![Image Name](https://cdn.kesci.com/upload/sl1bc1icca.png?imageView2/0/w/640/h/640)  \n","\n","\n","- [**PyMC**](https://www.pymc.io/welcome.html)  \n","\n","![Image Name](https://cdn.kesci.com/upload/sl1bdlkzgo.png?imageView2/0/w/640/h/640)  \n","\n","- [**JAGS**](https://sourceforge.net/projects/mcmc-jags/)  \n","\n","![Image Name](https://cdn.kesci.com/upload/sl1c6xm3bz.png?imageView2/0/w/640/h/640)  \n","\n","\n","- [**BUGS (Bayesian Inference Using Gibbs Sampling)**](http://www.bayesianscientific.org/resource/bugs-openbugs-winbugs/)  \n","\n","![Image Name](https://cdn.kesci.com/upload/sl1bci6132.png?imageView2/0/w/640/h/640)  \n","\n","\n","- [**julia turing**](https://turinglang.org/docs/tutorials/docs-00-getting-started/index.html)  \n","\n","![Image Name](https://cdn.kesci.com/upload/sl1bg8c98q.png?imageView2/0/w/640/h/640)  \n"]},{"cell_type":"markdown","metadata":{},"source":["**课程预告：**  \n","\n","- 在接下来的课程中，我们将深入探讨 **马尔可夫链蒙特卡洛(MCMC)** 方法的具体原理。MCMC是一种强大的统计模拟技术，用于估计贝叶斯模型中的参数。\n","     \n","- 我们将重点介绍如何使用 **PyMC** 这一概率编程语言来进行MCMC模拟的基本过程。通过PyMC，我们可以更加高效地进行贝叶斯统计分析，无需担心底层算法的实现细节。"]},{"cell_type":"markdown","metadata":{"id":"B0C5542FF01447A9ADDD192245E01FE0","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["## What is Pymc?  \n","\n","![Image Name](https://cdn.kesci.com/upload/image/rjvix0jc6b.png?imageView2/0/w/320/h/320)  \n","\n","\n","PyMC是一个在Python中基于 **概率编程语音(probabilistic program language, PPL)** 的工具，允许用户使用简单的Python API构建贝叶斯模型，并使用马尔可夫链蒙特卡洛（MCMC）方法进行拟合。  \n","\n","特点：  \n","\n","- PyMC致力于使贝叶斯建模尽可能简单，使用户能够专注于问题本身，而不是方法。 \n"," \n","- 包括最先进的推断算法，包括MCMC（NUTS）和变分推断（ADVI）。  \n","\n","- 高效快速：使用PyTensor作为计算后端，通过C、Numba或JAX进行编译，可以将模型运行在GPU上，并受益于复杂的图优化。  \n","\n","- 提供后续的分析方法：包括概率分布、高斯过程、ABC、SMC等等。它与ArviZ集成得很好，用于可视化和诊断，以及与Bambi集成用于高级混合效应模型。 \n"," \n","- 注重社区：在讨论区提问问题，参加MeetUp活动，关注他们的Twitter，并开始贡献。"]},{"cell_type":"markdown","metadata":{"id":"5A5EFABACEDD47BEA5FA5742722E8B12","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","runtime":{"execution_status":null,"is_visible":false,"status":"default"},"scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[]},"source":["下面展示了如何使用 PyMC，通过简单的代码实现之前对于 Beta-Binomial 模型的后验推断。后面的课程学习中我们会不断地使用这个工具😜。"]},{"cell_type":"code","execution_count":1,"metadata":{"collapsed":false,"id":"98F20F7E4E664C0EBD407B346398DFFF","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"skip"},"tags":[],"trusted":true},"outputs":[],"source":["import pymc as pm\n","import numpy as np\n","import arviz as az\n","import matplotlib.pyplot as plt\n","from scipy.stats import beta\n","\n","# 生成模拟数据\n","n_trials = 100\n","n_successes = 90"]},{"cell_type":"code","execution_count":6,"metadata":{"collapsed":false,"id":"9BBDF7A747E442048878D1BC900BBEF4","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"name":"stderr","output_type":"stream","text":["Auto-assigning NUTS sampler...\n","Initializing NUTS using jitter+adapt_diag...\n","Multiprocess sampling (4 chains in 4 jobs)\n","NUTS: [p]\n"]},{"data":{"application/vnd.jupyter.widget-view+json":{"model_id":"7474577f9be54d62a5819134f9701a74","version_major":2,"version_minor":0},"text/plain":["Output()"]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"],"text/plain":[]},"metadata":{},"output_type":"display_data"},{"name":"stderr","output_type":"stream","text":["Sampling 4 chains for 1_000 tune and 10_000 draw iterations (4_000 + 40_000 draws total) took 3 seconds.\n"]}],"source":["# 定义贝叶斯模型\n","with pm.Model() as bb_model:\n","    # 设置先验\n","    p = pm.Beta('p', alpha=70, beta=30)\n","    \n","    # 设置似然\n","    likelihood = pm.Binomial('likelihood', n=n_trials, p=p, observed=n_successes)\n","    \n","    # 采样\n","    trace = pm.sample(10000, return_inferencedata=True)"]},{"cell_type":"code","execution_count":7,"metadata":{"collapsed":false,"id":"12D5691B74BA4C54BEAA6F5A5CA0EAE7","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>mean</th>\n","      <th>sd</th>\n","      <th>hdi_3%</th>\n","      <th>hdi_97%</th>\n","      <th>mcse_mean</th>\n","      <th>mcse_sd</th>\n","      <th>ess_bulk</th>\n","      <th>ess_tail</th>\n","      <th>r_hat</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>p</th>\n","      <td>0.8</td>\n","      <td>0.028</td>\n","      <td>0.747</td>\n","      <td>0.852</td>\n","      <td>0.0</td>\n","      <td>0.0</td>\n","      <td>16169.0</td>\n","      <td>26452.0</td>\n","      <td>1.0</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>"],"text/plain":["   mean     sd  hdi_3%  hdi_97%  mcse_mean  mcse_sd  ess_bulk  ess_tail  r_hat\n","p   0.8  0.028   0.747    0.852        0.0      0.0   16169.0   26452.0    1.0"]},"execution_count":7,"metadata":{},"output_type":"execute_result"}],"source":["# 显示采样结果\n","az.summary(trace)"]},{"cell_type":"code","execution_count":8,"metadata":{"collapsed":false,"id":"17C51B854A21485E9760BF1D641F354C","jupyter":{},"notebookId":"6705143d869297e63ecbeaac","scrolled":false,"slideshow":{"slide_type":"slide"},"tags":[],"trusted":true},"outputs":[{"data":{"image/png":"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","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["# 绘制p的后验分布\n","az.plot_posterior(trace)\n","plt.show()"]},{"cell_type":"code","execution_count":9,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAA90AAAHqCAYAAAAZLi26AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAADGw0lEQVR4nOzdd1hW9f/H8efNniIqQ0VxD9wrxYXmIDXTb9m0zIY2TG2oZanZtNJMs0wbjoZmZZaZmXuDG/dW3AscyB73+f2B3D9x5QDODbwe18VVnnPuc17ngHi/78+yGIZhICIiIiIiIiI5zsHsACIiIiIiIiIFlYpuERERERERkVyioltEREREREQkl6joFhEREREREcklKrpFREREREREcomKbhEREREREZFcoqJbREREREREJJeo6BYRERERERHJJSq6RURERERERHKJim4REckXpkyZgsVisX05OTkRFBTEU089xbFjx3L8eomJiQwfPpylS5fm+LkBli5disViybXz27Nr3fvcuXMZPny4aZlERERyi4puERHJVyZPnkxERAQLFiygV69eTJ8+nRYtWpCQkJCj10lMTOSdd97JtaK4fv36REREUL9+/Vw5f34zd+5c3nnnHbNjiIiI5DgnswOIiIjcipo1a9KwYUMAWrduTUZGBu+99x5//PEH3bt3Nzndf0tLS8NisVCkSBGaNGmSY+dNTEzEw8Pjpo9PSkrCzc0Ni8WSYxlERETkamrpFhGRfC2rcD106BAAycnJDB48mPLly+Pi4kLp0qXp06cP58+fz/a6xYsX06pVK4oXL467uztly5blgQceIDExkejoaPz8/AB45513bF3ae/bsaXv93r17eeyxx/D398fV1ZXq1avz5ZdfZrtGVjfqH374gddee43SpUvj6urKvn37rtu9fPbs2YSGhuLh4YG3tzft2rUjIiIi2zHDhw/HYrGwceNGunXrhq+vLxUrVrzuM8rqmj9//nyefvpp/Pz88PDwICUlBYAZM2YQGhqKp6cnXl5ehIeHs2nTpmznOHDgAI888gilSpXC1dWVgIAA2rRpQ1RUlO0Yi8VyzS7i5cqVy/bsrtSzZ0/bs7t8CEF0dDQAv/76K40bN8bHxwcPDw8qVKjA008/fd3ziYiI2BO1dIuISL62b98+APz8/DAMg65du7Jo0SIGDx5MixYt2LJlC2+//TYRERFERETg6upKdHQ0nTp1okWLFkyaNImiRYty7Ngx5s2bR2pqKiVLlmTevHncc889PPPMMzz77LO2awDs2LGDpk2bUrZsWT799FMCAwP5999/6devHzExMbz99tvZMg4ePJjQ0FAmTJiAg4MD/v7+nDx58qp7mTZtGt27d6d9+/ZMnz6dlJQUPvnkE1q1asWiRYto3rx5tuPvv/9+HnnkEZ5//vmb6l7/9NNP06lTJ3744QcSEhJwdnbmww8/ZMiQITz11FMMGTKE1NRURo4cSYsWLVi7di0hISEAdOzYkYyMDD755BPKli1LTEwMq1evvurDjNsxdOhQEhIS+O2337J9wFCyZEkiIiJ4+OGHefjhhxk+fDhubm4cOnSIxYsX3/F1RURE8oQhIiKSD0yePNkAjMjISCMtLc24ePGiMWfOHMPPz8/w9vY2Tp48acybN88AjE8++STba2fMmGEAxtdff20YhmH89ttvBmBERUVd93pnzpwxAOPtt9++al94eLgRFBRkXLhwIdv2l156yXBzczPOnj1rGIZhLFmyxACMli1bXnWOrH1LliwxDMMwMjIyjFKlShm1atUyMjIybMddvHjR8Pf3N5o2bWrb9vbbbxuAMWzYsBs/tEuynl2PHj2ybT98+LDh5ORk9O3bN9v2ixcvGoGBgcZDDz1kGIZhxMTEGIAxZsyYG17nes8rODjYePLJJ21/vvLeDcMw+vTpY1zrbcmoUaMMwDh//vx/3KWIiIh9UvdyERHJV5o0aYKzszPe3t7ce++9BAYG8s8//xAQEGBr/byyK/ODDz6Ip6cnixYtAqBu3bq4uLjQu3dvpk6dyoEDB276+snJySxatIj//e9/eHh4kJ6ebvvq2LEjycnJREZGZnvNAw888J/n3b17N8ePH+eJJ57AweH//3n28vLigQceIDIyksTExFs+742O//fff0lPT6dHjx7Z7sPNzY2wsDBb1/dixYpRsWJFRo4cyejRo9m0aRNWq/WWrn27GjVqBMBDDz3EL7/8kisz1YuIiOQmFd0iIpKvfP/996xbt45NmzZx/PhxtmzZQrNmzQCIjY3FycnJ1g08i8ViITAwkNjYWAAqVqzIwoUL8ff3p0+fPlSsWJGKFSsyduzY/7x+bGws6enpjBs3Dmdn52xfHTt2BCAmJibba0qWLHlT573esaVKlcJqtXLu3LlbPu+Njj916hSQWdheeS8zZsyw3YfFYmHRokWEh4fzySefUL9+ffz8/OjXrx8XL168pQy3qmXLlvzxxx+2DweCgoKoWbMm06dPz9XrioiI5BSN6RYRkXylevXqttnLr1S8eHHS09M5c+ZMtsLbMAxOnjxpazUFaNGiBS1atCAjI4P169czbtw4Xn75ZQICAnjkkUeue31fX18cHR154okn6NOnzzWPKV++fLY/38wM4cWLFwfgxIkTV+07fvw4Dg4O+Pr63vJ5b3R8iRIlAPjtt98IDg6+4WuDg4P57rvvANizZw+//PILw4cPJzU1lQkTJgDg6upqm5ztclkfKNyuLl260KVLF1JSUoiMjGTEiBE89thjlCtXjtDQ0Ds6t4iISG5TS7eIiBQYbdq0AeDHH3/Mtn3mzJkkJCTY9l/O0dGRxo0b22bP3rhxI5BZQELm0lqX8/DwoHXr1mzatInatWvTsGHDq76yCuhbUbVqVUqXLs20adMwDMO2PSEhgZkzZ9pmNM9J4eHhODk5sX///mvex/U+3KhSpQpDhgyhVq1atucFmbOUb9myJduxixcvJj4+/j+zXO95X3lMWFgYH3/8McBVM6yLiIjYI7V0i4hIgdGuXTvCw8N5/fXXiYuLo1mzZrbZy+vVq8cTTzwBwIQJE1i8eDGdOnWibNmyJCcnM2nSJADatm0LgLe3N8HBwfz555+0adOGYsWKUaJECcqVK8fYsWNp3rw5LVq04IUXXqBcuXJcvHiRffv28ddff93WzNoODg588skndO/enXvvvZfnnnuOlJQURo4cyfnz5/noo49y7kFdUq5cOd59913eeustDhw4wD333IOvry+nTp1i7dq1eHp68s4777BlyxZeeuklHnzwQSpXroyLiwuLFy9my5YtvPHGG7bzPfHEEwwdOpRhw4YRFhbGjh07+OKLL/Dx8fnPLLVq1QLg448/pkOHDjg6OlK7dm3ef/99jh49Sps2bQgKCuL8+fOMHTsWZ2dnwsLCcvyZiIiI5DQV3SIiUmBYLBb++OMPhg8fzuTJk/nggw8oUaIETzzxBB9++KGtNbVu3brMnz+ft99+m5MnT+Ll5UXNmjWZPXs27du3t53vu+++Y+DAgdx3332kpKTw5JNPMmXKFEJCQti4cSPvvfceQ4YM4fTp0xQtWpTKlSvbxnXfjsceewxPT09GjBjBww8/jKOjI02aNGHJkiU0bdr0jp/PtQwePJiQkBDGjh1rW6YsMDCQRo0a8fzzzwMQGBhIxYoVGT9+PEeOHMFisVChQgU+/fRT+vbtazvXwIEDiYuLY8qUKYwaNYq77rqLX375hS5dutzUva9atYrx48fz7rvvYhgGBw8epHHjxqxfv57XX3+dM2fOULRoURo2bMjixYupUaNGrjwTERGRnGQxLu/DJiIiIiIiIiI5RmO6RURERERERHKJim4RERERERGRXKKiW0RERERERCSXqOgWERERERERySUqukVERERERERyiYpuERERERERkVySJ0W3YRjExcWh1clERERERESkMMmTovvixYv4+Phw8eLFvLiciIiIiIiIiF1Q93IRERERERGRXKKiW0RERERERCSXqOgWERERERERySUqukVERERERERyiYpuERERERERkVziZHaALBkZGaSlpZkdQ0REruDi4oKDgz6jFREREbkdphfdhmFw8uRJzp8/b3YUERG5BgcHB8qXL4+Li4vZUURERETyHdOL7qyC29/fHw8PDywWi9mRRETkEqvVyvHjxzlx4gRly5bV72gRERGRW2Rq0Z2RkWEruIsXL25mFBERuQ4/Pz+OHz9Oeno6zs7OZscRERERyVdMHaSXNYbbw8PDzBgiInIDWd3KMzIyTE4iIiIikv/Yxcw46q4oImK/9DtaRERE5PbZRdEtIiIiIiIiUhCp6M5jrVq14uWXXzY7Rq5ZvHgx1apVw2q1mh3lpgwYMIB+/fqZHUNERERERAooFd23qWfPnlgsFiwWC87OzlSoUIEBAwaQkJBww9f9/vvvvPfeezmeJzo62pbHYrHg4uJCpUqVeP/99zEM45bPExUVdVs5Bg0axFtvvWVb0/fy53T5V40aNbK9bubMmYSEhODq6kpISAizZs264XV2795N69atCQgIwM3NjQoVKjBkyJCr1npftmwZDRo0sB0zYcKEq/JOnjyZgwcP3tb9ioiIiIiI3IiK7jtwzz33cOLECQ4cOMD777/P+PHjGTBgwDWPzSoGixUrhre3921fMyMj44atyAsXLuTEiRPs3buXd955hw8++IBJkybd9vVuxerVq9m7dy8PPvigbdvYsWM5ceKE7evIkSMUK1Ys2zERERE8/PDDPPHEE2zevJknnniChx56iDVr1lz3Ws7OzvTo0YP58+eze/duxowZwzfffMPbb79tO+bgwYN07NiRFi1asGnTJt5880369evHzJkzbcf4+/vTvn37q4pxERERERGRnKCi+w64uroSGBhImTJleOyxx+jevTt//PEHAMOHD6du3bpMmjSJChUq4OrqimEYV3UvP3fuHD169MDX1xcPDw86dOjA3r17bfunTJlC0aJFmTNnjq0l+NChQ9fNVLx4cQIDAwkODqZ79+40bdqUjRs3Zjtm8uTJVK9eHTc3N6pVq8b48eNt+8qXLw9AvXr1sFgstGrVCoB169bRrl07SpQogY+PD2FhYVed9+eff6Z9+/a4ubnZtvn4+BAYGGj7Wr9+PefOneOpp56yHTNmzBjatWvH4MGDqVatGoMHD6ZNmzaMGTPmuvdZoUIFnnrqKerUqUNwcDD33Xcf3bt3Z8WKFbZjJkyYQNmyZRkzZgzVq1fn2Wef5emnn2bUqFHZznXfffcxffr0615LRERERETkdtld0W0YBgmpCaZ83Uo37Gtxd3fP1r153759/PLLL8ycOfO63bV79uzJ+vXrmT17NhERERiGQceOHbOdJzExkREjRvDtt9+yfft2/P39byrP+vXr2bhxI40bN7Zt++abb3jrrbf44IMP2LlzJx9++CFDhw5l6tSpAKxduxb4/xbz33//HYCLFy/y5JNPsmLFCiIjI6lcuTIdO3bk4sWLtnMvX76chg0b3jDTd999R9u2bQkODrZti4iIoH379tmOCw8PZ/Xq1Td1n5D5rOfNm0dYWNh/nnf9+vXZnu9dd93FkSNHbvhhhoiIiIiIyO1wMjvAlRLTEvEa4WXKteMHx+Pp4nlbr127di3Tpk2jTZs2tm2pqan88MMP+Pn5XfM1e/fuZfbs2axatYqmTZsC8NNPP1GmTBn++OMPWxfstLQ0xo8fT506df4zR9OmTXFwcCA1NZW0tDR69+5Njx49bPvfe+89Pv30U+6//34gs2V7x44dTJw4kSeffNKWNavFPMvdd9+d7ToTJ07E19eXZcuWce+99wKZ48FLlSp13WwnTpzgn3/+Ydq0adm2nzx5koCAgGzbAgICOHny5E3d78aNG0lJSaF37968++67/3ne9PR0YmJiKFmyJAClS5e25b/8wwARERFGjYLYWHB0BAcH21eGxQGKF8fxxRf+/9iffoKYmGzH2b5q1oTQUPPuQ0RETGN3RXd+MmfOHLy8vEhPTyctLY0uXbowbtw42/7g4ODrFtwAO3fuxMnJKVtLdPHixalatSo7d+60bXNxcaF27do3lWnGjBlUr16dtLQ0tm7dSr9+/fD19eWjjz7izJkzHDlyhGeeeYZevXrZXpOeno6Pj88Nz3v69GmGDRvG4sWLOXXqFBkZGSQmJnL48GHbMUlJSdm6ll8pq6t8165dr9p35TrAhmHc1NrAM2bM4OLFi2zevJmBAwcyatQoBg0adMPzXrnd3d0dyOxRICIiks3XX8OlYV9JTq5MrxPOwkqNWR9UndQEF9yHzqNumaKEVfXj3i++JShy6bXP4+gIu3dDxYp5l11EROyC3RXdHs4exA+ON+3at6J169Z89dVXODs7U6pUKZydnbPt9/S8cav59bqzX1lwuru731QBClCmTBkqVaoEQPXq1Tlw4ABDhw5l+PDhtgnYvvnmm2yFPoCjo+MNz9uzZ0/OnDnDmDFjCA4OxtXVldDQUFJTU23HlChRgnPnzl33niZNmsQTTzyBi4tLtn2BgYFXtWqfPn36qlbq690vQEhICBkZGfTu3ZvXXnsNR0fH657XycmJ4sWL27adPXsW4IYfkIiISCH11FNw+jTrKMLLzjU55pD9vUJSWgYRB2KJOBDLR2EDCG38OM+c38HdCYdxsFrBaoUVK2DkSLjUw0pERAoXuyu6LRbLbXfxzmuenp62Avd2hISEkJ6ezpo1a2zdy2NjY9mzZw/Vq1fPkYyOjo6kp6eTmppKQEAApUuX5sCBA3Tv3v2ax2cVxBkZGdm2r1ixgvHjx9OxY0cAjhw5QkxMTLZj6tWrx44dO6553mXLlrFv3z6eeeaZq/aFhoayYMECXnnlFdu2+fPn257JzTIMg7S0NNuHGaGhofz111/Zjpk/fz4NGzbM9gHJtm3bcHZ2vmoZMxERKYTS06FXL3j0UWjXDgYPZvbm47z2SxRpGQali7rzbIvytKhcAl8PF84mpLJ6fyz/bj+ZWXy7BRIRGEi1QG/e7lyD0IrF//uaIiJSoNld0V2YVK5cmS5dutCrVy8mTpyIt7c3b7zxBqVLl6ZLly63dc7Y2FhOnjxJeno6W7duZezYsbRu3ZoiRYoAmbOq9+vXjyJFitChQwdSUlJsM4q/+uqr+Pv74+7uzrx58wgKCsLNzQ0fHx8qVarEDz/8QMOGDYmLi2PgwIG2btlZwsPDbROyXem7776jcePG1KxZ86p9/fv3p2XLlnz88cd06dKFP//8k4ULF7Jy5crr3udPP/2Es7MztWrVwtXVlQ0bNjB48GAefvhhnJwyf6yff/55vvjiC1599VV69epFREQE33333VUzla9YsYIWLVpcdT8iIlII/fUXTJmS+d8jR/h773le/nkTVgM61SrJx91q4+X6/2+finu5UjnAmyebluP4+SS+jzjET5GH2HXyIo9+E0m3BkG837Umbs437lEmIiIFl93NXl7YTJ48mQYNGnDvvfcSGhqKYRjMnTv3qq7qN6tt27aULFmScuXK0bt3bzp27MiMGTNs+5999lm+/fZbpkyZQq1atQgLC2PKlCm2pcKcnJz4/PPPmThxIqVKlbIV/5MmTeLcuXPUq1ePJ554gn79+l01i/rjjz/Ojh072L17d7btFy5cYObMmdds5YbMydB+/vlnJk+eTO3atZkyZQozZszI1gV+ypQp2brYOzk58fHHH3PXXXdRu3Zthg8fTp8+ffj2229tx5QvX565c+eydOlS6taty3vvvcfnn3/OAw88kO3606dPzzbGXURECrHPP8/8b+/eLDl0kf6XCu6HG5Zh3KP1shXcVypV1J03OlRjxeuteaJJMA4W+G3DUR6eGMGpo6dhzBh46aW8uQ8REbEbFuNO18m6CXFxcfj4+HDhwgVbiytAcnIyBw8epHz58jecgEvyj0GDBnHhwgUmTpyYo+cdPnw4S5cuZenSpTl63r///puBAweyZcsWWwu5iGSn39VSaGzZAnXqgKMj+zbupOvMA8SnpNO1bik+fagujg43N79KltX7Ynhx2kbOJ6ZRrogzM0Y8SkDCOThwAMqVy517EBERu6OWbslRb731FsHBwVeNCb9T//77L5988kmOnhMgISGByZMnq+AWERH44gsALnR7mN7zjxGfks5d5Ysx8sE6t1xwAzStVILZfZoT5OtOdFwaz/YcSZKjC3z3XU4nFxERO6aWbhERuSH9rpZCITYWypQhIzmFZ0fOZcmZdEr5uDG7b3NKeLne0akPxybSdfwqziak8mjUPEZs/R0OHQJ94CsiUiiopVtERETku+8gKYnRD7zKkjPpuDk78HWPhndccAOULe7BF4/Ww2KB6XXvYYlbSZg7NwdC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98fd3d024diFCxcAGD58OCNGjGDs2LHs2bOHrVu3Mnny5JtewirLwIEDmTJlChMmTGDv3r2MHj2a33///baXO0tMTOTkyZOcPHmSzZs38+KLL+Lm5kb79u0B6NOnD2fPnuXRRx9l7dq1HDhwgPnz5/P000/biphy5cqxZs0aoqOjiYmJwWq1UqlSJdavX8+///7Lnj17GDp0KOvWrct27datW5OQkMD27duzbT98+DBRUVEcPnyYjIwMWxEcf6kHRZUqVejSpQv9+/dn9erVbNu2jSeffJJq1arRunVrAB577DFcXV3p2bMn27ZtY9asWXz44Ye8+uqr1209LFu2LDVr1rR9ZRU2FStWtBVL7du3JyQkhCeeeIJNmzaxaNEiBgwYQK9evbJNCJfVYh4aGnpb35fLde/eHTc3N5588km2bdvGkiVL6Nu3L0888cR1W+1vh5ubG6+//jqDBg3i+++/Z//+/URGRvLdd9/lao67776bL774go0bN7J+/Xqef/75bB+EPfroowQGBtK1a1dWrVrFgQMHmDlzJhEREUDmB2W///67bZjEY489dlXLerly5Vi+fDnHjh0jJiYGyJy0MCIigj59+hAVFcXevXuZPXs2ffv2BaBq1arcc8899OrVizVr1rBhwwaeffbZ/2x5h8ylu5555hnbhItvv/02L730Urbu//8lr77vIvbul/VHOX4hmUBng4eX/gzFikHz5mbHsmlasQR+3q6cT0xj2aKNZscREZEcpqI7l3z00Uc88MADPPHEE9SvX599+/bx77//4uvrC2S2mg0ePJjatWvTsmVLHB0d+fnnnwFwcnLi888/Z+LEiZQqVYouXboA8Oyzz/Ltt98yZcoUatWqRVhYGFOmTLnllu6uXbsyduxYRo4cSY0aNZg4cSKTJ0+mVatWt3Wv33zzDSVLlqRkyZK0bt2aM2fOMHfuXKpWrQpAqVKlWLVqFRkZGYSHh1OzZk369++Pj4+PrYAYMGAAjo6OhISE4Ofnx+HDh3n++ee5//77efjhh2ncuDGxsbG8+OKL2a5dvHhx7r//fn766ads24cNG0a9evV4++23iY+Pp169etSrVy9bi+P3339P48aN6dSpE2FhYTg7OzNv3jxbsebj48OCBQs4evQoDRs25MUXX+TVV1/l1VdftZ0jOjoai8XC0qVLb/p5OTo68vfff+Pm5kazZs146KGH6Nq161VDC6ZPn0737t2vOQP6rfLw8ODff//l7NmzNGrUiG7dutGmTRu++OKLOz73lYYOHcprr73GsGHDqF69Og8//LCtW35u5fj0008pU6YMLVu25LHHHmPAgAHZnpuLiwvz58/H39+fjh07UqtWLT766CNbr4zPPvsMX19fmjZtSufOnQkPD6d+/frZrvHuu+8SHR1NxYoVbV3+a9euzbJly9i7dy8tWrSgXr16DB06NNuwicmTJ1OmTBnCwsK4//776d27N/43MY60TZs2VK5cmZYtW/LQQw/RuXNnhg8ffkvPJS+/7yL2KjXdamvlfnHvItwy0qB376t7zZnI0cFCl6qZc078OWEmxMaanEhERHKSxbjVfrm3IS4uDh8fHy5cuJCtJS85OZmDBw9Svnz525oMSwQyl21q27Yt+/btw9vbO0+vvXTpUv73v/9x4MAB2wcqOeHMmTNUq1aN9evX3/KHKoVBaGgobdq04f333zc7Sq7o2bMn58+f548//jA7CqDf1ZK/zd58nH7TN+Hn5sCK97vghjVzfpdbGKqRF6KOnKfrl6vwSE1iY9BR3F592exIIiKSQ9TSLflerVq1+OSTT264dnZumTdvHm+++WaOFtwABw8eZPz48Sq4r5CSksL69evZvn07NWrUMDuOiOQDU1YdBKD72R2Zrdz33293BTdAnSAfSjumk+jiztK/V2cuaCoiIgWC/c5eLnILnnzySVOu+9FHH+XKee+66y7uuuuuXDl3fvbPP//Qo0cPOnfuTLdu3cyOIyJ2buvRC2w8fB5nBwuPTfs0c+M1VhuwBxaLhY4Ng/lmzTH+9izHPatXwxXLe4qISP6koltE8o2uXbsSFxdndoxcN2XKFLMjiBQIU1ZHA9DJ34J/ajzUrWvXhWzHBplF96JKd5H89Xe42XFWERG5eepeLiIiIgVOTHwKf20+DsCT9zeBo0fhp5/gOqtP2IO6ZYpS2t0hs4v5hv1w7pzZkUREJAeo6BYREZEC5+e1h0nNsFInyId6ZX2hSBEICTE71g1ldTEHmFvhLpg1y+REIiKSE+yi6L5yPVwREbEfebDIhUiOyrAaTF97BIAeQQ75alKyjrUylxxcVKsVyY/3MDmNiIjkBFPHdLu4uODg4MDx48fx8/PDxcUFix13+xIRKWwMw+DMmTNYLBbbGvYi9m7F3jMcO5+Ej4sDnbq1gnp1YPVqyAc/w3XLFKV0UXeOnU9i+d4Y2tcINDuSiIjcIVOLbgcHB8qXL8+JEyc4fvy4mVFEROQ6LBYLQUFBODo6mh1F5KbMWJfZyv2/uH2Zy4SVL58vCm7I/PsWXiOQSasOMn/HKdpX9wcHu+iYKCIit8n02ctdXFwoW7Ys6enpZGRkmB1HRESu4OzsrIJb8o2Y+BQW7DgFwMMzv8zcaKfLhF1P+xoBTFp1kEXrD5A+sCtOWzZnjkkXEZF8yfSiG7B1W1TXRREREbkTv288SrrVoI5jItWP7rb7ZcKupWGwL0XdnTmXBOutXjSZPh2ee87sWCIicpvUX0lEREQKjN83HgPgoYg/Mjf062fXy4Rdi5OjA22qBwAwv3IT+OYbkxOJiMidUNEtIiIiBcLOE3HsOnkRF4vBvav/hBIl4NFHzY51W9rXuFR0VwnF2LABNm40OZGIiNwuFd0iIiJSIPyxKbOVu3XiUXxSEqB3b3BzMznV7WlZ2Q83ZweO+gSwy6+cWrtFRPIxFd0iIiKS72VYDf6MylwJ5X/PdIa//oI+fUxOdfvcXRxpUdkPuNTF/KefICHB5FQiInI7VHSLiIhIvrfmQCwn45Ip4uZE65BAuPdeKFXK7Fh3pH3IpS7mNcPg4kWYMcPkRCIicjtUdIuIiEi+N+tS1/JONQJwdSoYS9y1qR6AgwW2+5bh6IC3ICzM7EgiInIbVHSLiIhIvpaclsE/204C8L/3Xiow45+LebrQsFwxABZ0fQYqVjQ5kYiI3A4V3SIiIpKvLdl1mviUdEonxNJw62pwcjI7Uo6xdTHffsrkJCIicrtUdIuIiEi+9u/2zFbujtuX4eDsBA8+aHKinNM+JBCAtdFnOf/PAujRAxITTU4lIiK3QkW3iIiI5Fup6VYW7ToNQPieCGjaFLy8TE51e+bMmUNYWBg+Pj4UKVKEsLAwtkQsplqgNxlWg8UffwM//AC//faf5zp27BgvvPACFSpUwNXVFS8vL+rXr8/IkSNJSUnJg7sREZEsKrpFREQk34o4EMvF5HRKpCdS/9guaNPG7Ei35fPPP6dz586sXr2apk2bcvfdd7Nu3To6d+6M+575AMxv1iXz4P8Ys75nzx7q1q3LhAkTsFgsdO7cmRYtWrB3714GDRpE27ZtSUtLy+1bEhGRS1R0i4iISL6V1bW8/Z4IHDCgbVuTE926PXv28Nprr+Hq6sry5cv5559/+OOPP4iKiqJ48eLM+eZj0s4eY5mlGMkubrByJRw9et3zvfHGG8TExPDSSy+xZ88efvvtN/755x/2799P5cqVWblyJT/++GMe3qGISOGmoltERETyJavVYMGOzAnGwrctA29vaNTI5FS3buzYsaSnp/P8888TGhpq216lShXeeust0tPTsW6dS1K6lZWt/pe5c9Wq655v+fLlAAwZMgRHx/9fPs3f358XX3wRgHXr1uXCnYiIyLWo6BYREZEcFR0djcVioVWrViQkJPDqq69SpkwZ3N3dqV+/Pn/99Zft2F9//ZW77roLT09PAgIC6NevH0lJSVedMz4+nnfffZdatWrh4eFBkSJFaBTanEMbluLt4kBot7bQu7dt5vK///6bp59+murVq1OkSBE8PT2pU6cOH3744TXHNE+ZMgWLxcLw4cM5fPgwjz32GH5+fri7u9OwYcNsmXPanDlzAOjWrdtV+x68NClc0oHMInl+rUtrda9ced3zubq6/uc1ixUrdqsxRUTkNhWcNTVERETErqSmptKmTRv2799PkyZNiI+PZ/ny5fzvf/9j3rx5bN26lUGDBtGoUSPat2/PihUrGDduHLGxsfz000+285w6dYq7776bHTt2ULp0adq1a0diYiLLV64ide1qKrv2xWX659mu/cwzz5CQkECNGjWoVasWcXFxrF27lrfeeotFixYxf/78bK3AWaKjo2nUqBFubm40b96cU6dOERERQdeuXfnnn39o3759jj6j8+fPc/jwYQDq1at31f6goCBKlChBzOnjFElJYJFnaTIsDjjeoOhu164dU6dO5YMPPmDMmDE4OGS2sZw+fZrx48fj5ORE9+7dc/Q+RETkBow8cOHCBQMwLly4kBeXExERERMdPHjQAAzAaNWqlXH27FnbvsmTJxuAUalSJaNYsWLG8uXLbfuOHTtm+Pv7G4Cxf/9+2/YOHToYgDFo0CAjNTXVMAzDsFqtRqPXfzScipY0HBwdjc2bN2fLMGvWLCM+Pj7btri4OOPee+81AGPq1KnZ9mXlAoy+ffsaaWlptn1jxowxAKNFixZX3WtwcLDtdTf7dfDgQdvrN2/ebACGr6/vdZ9n3bp1DcCo/MIEI/j1Ocba0iGGUbWqYaSkXPP448ePGzVq1DAAo0KFCka3bt2MDh06GF5eXkZwcLAxZ86c615LRERynlq6RUREJFc4OjryzTff4Ovra9vWo0cPBg0axL59+xg2bBgtWrSw7StVqhTdu3fns88+Y/ny5VSoUIGoqCj++ecfmjZtykcffYTFYgHgQEwCpymKX5tnODHzfb6dMIHPx4+3natr165X5fH29uazzz5jzpw5/Pnnn/To0eOqYypUqMCnn36Kk9P/v0Xq06cP77zzDpGRkaSmpuLi4mLb161bN2JiYm7puXhdtqRZfHw8AB4eHtc93tPTE4B6Jd1YkwDzP/ueRg82uO7xJUuWZNmyZTz66KMsWLCAAwcOAGCxWHjggQcICQm5pbwiInJnVHSLiIhIrihXrhyVKlXKts3BwYHg4GDOnDlDu3btrnpNxYoVAThx4gQACxYsAKBLly62ghtg6e4zADQrXZrfgHW//QaXFd0Ae/fuZe7cuezbt4+EhASsViuGYdj2XUurVq1wdnbOts3JyYkKFSqwYcMGYmNjKVmypG3fqFGj/vM53EhWnsvv7XrHNC5fjDXbYH50HG8axnVfs2XLFjp16oSjoyN//vknLVu2JCEhgd9++43Bgwczb948Vq1aZXvWIiKSu1R0i4iISK4oXbr0Nbdntdxea3/WvqzJzqKjowF4/fXXef311686/tCl/8Y4/P/csIZhMGDAAD777DNbwXqlixcvXnN7UFDQNbdntU5faxK2O+Ht7Q1AQkLCdY9JTEwEoFn1ICbsOsmh2ET2nIqnaoAXXFF4p6Wl8eCDD3L8+HHWr19vGydetGhR+vfvT0ZGBq+99hpDhw5l2rRpOXovIiJybSq6RUREJFfcqPX2ZvYDZGRkANCiRQsqVKiQuc1q8Ofm41itBu33RlIkJYESl3UnnzFjBqNHjyYoKIgxY8YQGhqKn58fzs7OpKam4urqet1i/GYyXW7AgAG33L181KhRlChRAoCyZcsCcO7cORISEmwfOlzu6KU1uatVqkCLSuks2nWafwd9TNX538KRI3BZy3xkZCR79uyhUqVK15yY7aGHHuK1115j6dKlt5RZRERun4puERERsVtZLc/dunWjX79+ACzZfZoVk9dRysVg5nudsVSvDhMm2F4za9YsAL766ivuvffebOfLGt+cU3777TcOHTr03wdeZvjw4baiu2jRopQtW5bDhw+z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","text/plain":["<Figure size 1000x500 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["import seaborn as sns\n","\n","fig, ax = plt.subplots(figsize=(10, 5))\n","\n","alpha_prior = 70\n","beta_prior = 30\n","\n","# 共轭先验的 Beta 分布\n","x = np.linspace(0, 1, 100)\n","alpha_posterior = alpha_prior + n_successes\n","beta_posterior = beta_prior + (n_trials - n_successes)\n","\n","# 绘制 beta-binomial 共轭分布的对比\n","ax.plot(\n","    x, beta.pdf(x, alpha_prior, beta_prior), \n","    label=f'Prior Beta({alpha_prior},{beta_prior})',\n","    color = \"green\"\n","    )\n","ax.plot(\n","    x, beta.pdf(x, alpha_posterior, beta_posterior), \n","    label=f'Posterior Beta({alpha_posterior},{beta_posterior}) from conjucated prior',\n","    color = \"red\", linestyle='--',\n","    )\n","ax.legend()\n","\n","az.plot_posterior(trace, var_names=['p'], ax=ax)  \n","\n","ax.set_xlim(0.5, 1)\n","ax.set_title('Posterior results')\n","\n","sns.despine()\n","plt.tight_layout()\n","plt.show()"]},{"cell_type":"markdown","metadata":{},"source":["### 小结\n","\n","- 从贝叶斯公式到贝叶斯推断\n","- 贝叶斯推断的核心与难点：获得后验分布\n","- 传统方法依赖共轭先验，限制了贝叶斯推断的使用\n","- 近似的方法是现代贝叶斯推断获得广泛应用的基础(网格近似、MCMC)。"]},{"cell_type":"markdown","metadata":{},"source":["### 💐补充材料\n","#### Normal-Normal conjugate family\n","\n","除了 Beta-Binomial 外，最常见的共轭分布是：Normal-Normal。  \n","\n","**以随机点运动任务（Random Dot Motion Task）为例**  \n","\n","假设我们打算开始进行一项随机点运动任务实验，尚未开始招募被试。为了对被试在不同条件下的表现进行推断，我们参考了先前的文献Vafaei Shooshtari et al. (2019)，他们的研究表明，当**随机点的一致性为5%时，个体的平均正确率约为 70%**。  \n","\n","为了更新我们对被试在随机点一致性为5%时的平均正确率的信念，我们计划通过贝叶斯推断收集10000名被试的实验数据，并使用Normal-Normal 贝叶斯模型来估计更新后的正确率。  \n","\n","  > Shooshtari, S. V., Sadrabadi, J. E., Azizi, Z., & Ebrahimpour, R. (2019). Confidence representation of perceptual decision by EEG and eye data in a random dot motion task. Neuroscience, 406, 510–527. https://doi.org/10.1016/j.neuroscience.2019.03.031  "]},{"cell_type":"markdown","metadata":{},"source":["**正态模型的应用**  \n","\n","在这个实验中，我们假设被试的正确率服从正态分布，即：  \n","\n","$$  \n","Y \\sim N(\\mu, \\sigma^2).  \n","$$  \n","\n","其中：  \n","- $Y_i$ 是第 $i$ 个被试在随机点一致性为5%时的正确率，  \n","- $\\mu$ 是我们要估计的平均正确率，  \n","- $\\sigma$ 是已知的正确率标准差。  \n","\n","根据 Vafaei Shooshtari et al. (2019) 的研究结果，我们对 $\\mu$（平均正确率）的初始信念假设为正态分布，即先验分布为：  \n","\n","$$  \n","\\mu \\sim N(\\theta, \\tau^2)  \n","$$  \n","\n","注：  \n","- $\\theta = 0.70$，表示我们根据文献得出的先验均值（70%），  \n","- $\\tau^2$ 是先验的方差，表示我们对这个均值的初始不确定性。  \n"]},{"cell_type":"markdown","metadata":{},"source":["**似然函数**  \n","\n","根据正态分布假设，样本数据的似然函数可以写为：  \n","\n","$$  \n","L(\\mu | \\vec{y}) \\propto \\prod_{i=1}^{n} \\exp\\left[{-\\frac{(y_i - \\mu)^2}{2\\sigma^2}}\\right]  \n","$$  \n","\n","其中，$y_i$ 是每个被试的观测正确率，$\\sigma^2$ 是已知的正确率方差。  \n"]},{"cell_type":"markdown","metadata":{},"source":["\n","**正态-正态共轭关系**  \n","\n","由于我们选择了正态分布作为 $\\mu$ 的先验，并且似然函数也是正态分布，因此，利用**正态-正态共轭**，后验分布仍然是正态分布。后验分布的形式为：  \n","\n","$$  \n","\\mu|\\vec{y} \\sim N\\left(\\frac{\\theta\\sigma^2 + \\bar{y}n\\tau^2}{n\\tau^2 + \\sigma^2}, \\frac{\\tau^2\\sigma^2}{n\\tau^2 + \\sigma^2}\\right)  \n","$$  \n","\n","其中：  \n","- $\\bar{y}$ 是样本的均值（观测到的平均正确率），  \n","- $\\sigma^2$ 是已知的正确率方差，  \n","- $\\tau^2$ 是先验的方差。  \n"]},{"cell_type":"markdown","metadata":{},"source":["\n","**后验分布分析**  \n","\n","- **后验均值**：后验均值是先验均值 $\\theta$ 和样本均值 $\\bar{y}$ 的加权平均：  \n","\n","  $$  \n","  \\text{posterior mean} = \\theta\\frac{\\sigma^2}{n\\tau^2 + \\sigma^2} + \\bar{y}\\frac{n\\tau^2}{n\\tau^2 + \\sigma^2}  \n","  $$  \n","\n","- **后验方差**：后验方差受先验的方差 $\\tau^2$ 和样本数据的方差 $\\sigma^2$ 的共同影响：  \n","\n","  $$  \n","  \\text{posterior variance} = \\frac{\\tau^2\\sigma^2}{n\\tau^2 + \\sigma^2}  \n","  $$  \n","\n","随着样本量 $n$ 的增加，后验均值逐渐依赖于观测数据，而对先验的依赖减小。同时，后验方差随着样本量的增加而减小，意味着我们对 $\\mu$ 的估计将变得更加精确。  \n"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[{"name":"stderr","output_type":"stream","text":["<>:33: SyntaxWarning: invalid escape sequence '\\m'\n","<>:33: SyntaxWarning: invalid escape sequence '\\m'\n","/var/folders/yk/78rqxlxn4pz_rsb5_31xvh340000gn/T/ipykernel_25367/547473246.py:33: SyntaxWarning: invalid escape sequence '\\m'\n","  plt.xlabel('$\\mu$ for accuracy (correct response rate)')\n"]},{"data":{"image/png":"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nnlmk8cmTpzYaj8ulwvHjh3DOec0LVdxzjnnYNeuXWH305G6PNn8tttuw2233RbyOSOoaWzatGnYvn17m31effXVuPrqq1t9fvr06e1Oi0qShPvvvx/3339/m+2IiKjjGbNRZklGcpQ5UjbFBJMkwy80fOsqjzmQcpjMqPn572LqI5Zrd7TGG6xuuukmzJw5E//+97+xbt06LF++HI888gjuuOOOkK/VNA0A8O9//xv9+/dv8lzzTVlOp7PdsYSz+SucfjpClwdSRERE7TGOdbGZzLAo0S3JSZKEZLMVFV538PDjWEiSFPHyWlf67LPPWvx5+PDhGD16NPx+P7Zs2RJc2isvL8f+/fsxatSoYPu8vDzMnTsXc+fOxd13340XXngBd9xxBywW/R6oqhpsaxzTVlhY2GQZL1IpKSnIzc3Fpk2bcN555wUf37x5M84666yo+40nBlJERNTtGTNSdsUMWYp+n1SSyYIKrxuFtbEHUommqKgICxcuxK233ort27fjqaeewiOPPILhw4dj1qxZuPnmm/GnP/0JycnJWLJkCfr3749Zs2YB0POPLr74YowYMQIVFRX48MMPg0HWoEGDIEkS/u///g+XXHIJ7HY7kpOTsWjRIixYsACapuHcc8+Fy+XC5s2bkZSUhOuvvz7scd9111247777MGzYMIwbNw4vvfQSdu7ciddee61D7lOkGEgREVG311DVPLaPLWNZsLiu95VAuO666+B2u3HWWWdBURTccccduOWWWwAAL730EubPn48f/vCH8Hq9OO+887B27drgjnhVVfGrX/0KR44cQUpKCi666CI89thjAID+/fvjgQcewJIlS/CLX/wC1113HV5++WX89re/Rd++fbF8+XJ89913SEtLw/jx43HPPfdENO558+bB5XLhv//7v1FaWorRo0djzZo1GD58eHxvUJS69Ky9ns7lciE1NZVn7RERxWjeZ2/jqX2fYkRKFn469Mz2X9CKtUe+xhdlRfjRoNOx6vvXRfTaRD5rb/r06Rg3bhwef/zxrh5Kt5HwZ+0RERGFyyii6TTFlpOUFHh9aS8sykkdg4EUERF1e0YglRTljj2DsbRX5qmNeUxEAHOkiIgoARwPBFLRlj4wJAV22VV43DGPKZF8/PHHXT2EHoszUkRE1O0ZM1Kp5thyk5JMeiBW7fPAr6nttCZqHwMp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UGNta2ztXRcAzjzzTIwdOxavvvoqZs6cid27d+N///d/23xNVlYWKioqgn9u7zqx/iwaP258SP/73/9G//79m7SzWq1hjSdSkV5fURSsX78emzdvxrp16/DUU0/h3nvvxZYtWzBkyJB2rxfu/TKbzU2elyQpOL62xhDOe2hNpL+DrYlkDCdPngQA9OnTp82xUc/FZHOiCHzzzTdwu93Izc0NPpafn4+jR49GNCN1yimnwGKxYNOmTcHHfD4ftm7dilGjRoXdT3l5Ofbt24elS5fiBz/4AUaNGtUkiACA4cOHw26344MPPgjZR3vP9+nTB8XFxcE/u1wuFBQUxDy29q5ruOmmm/DSSy/hr3/9Ky644ALk5eW12f7MM8/E3r17w75OvH4WADB69GhYrVYUFhbilFNOafJljDuc922xWKCqakTXDvf6gB7UnHPOOXjggQewY8cOWCwWrF69Ovj8Z5991qTfzz77DMOHD4eiKHG7X62NIdz3EI5w/n4ALe93JGP46quvMGDAAGRlZUU0Nuo5OCNFFAGjkOZTTz2FefPm4dtvv8W8efMAoMXusrY4nU788pe/xF133YWMjAwMHDgQDz/8MOrq6nDjjTeG3U96ejoyMzPx5z//GTk5OSgsLMSSJUuatLHZbFi8eDF+/etfw2Kx4JxzzsGJEyewZ88e3Hjjje0+//3vfx8vv/wyLrvsMqSnp2PZsmVQFCXmsbV3XcPPfvYzLFq0CC+88AJeffXVdq87c+ZM3H333aioqEB6enq714nXzwIAkpOTsWjRIixYsACapuHcc8+Fy+XC5s2bkZSUhOuvvz6s9z148GBs2bIFhw4dQlJSEjIyMiDL7f+7N5zrb9myBR988AFmzJiBvn37YsuWLThx4kSTIKioqAgLFy7Erbfeiu3bt+Opp57CI488AiA+v7ttjSGc9xCucP5+AKHvd7hj2LhxI2bMmBH2mKgH6sL8LKKEc9ddd4kLL7xQXHrppcJisYhx48aJN998U6SkpIif/exnrb6uebK5EEK43W5xxx13iKysLGG1WsU555wjPv/88+Dz4SYcr1+/XowaNUpYrVZxxhlniI8//lgAEKtXrw62UVVVPPTQQ2LQoEHCbDaLgQMHiv/5n/8J6/mqqipxzTXXiJSUFJGXlydefvnlkMnmocba3tjaG5dhzpw5IiMjI+ydUWeffbZ4/vnnw37/0f4sQj2uaZp44oknxMiRI4XZbBZ9+vQRM2fOFBs2bAh7PN988404++yzhd1uFwBEQUFByPcZzfX37t0rZs6cKfr06SOsVqsYMWKEeOqpp5r0edttt4m5c+eKlJQUkZ6eLpYsWdIk+Tya+zVr1ixx/fXXhzWGcO5hOPdCiPD+foS63+GMwe12i5SUFJGfn9/quKjnY2VzogjMnDkT48ePx/Lly7t6KL3KhRdeiFGjRuHJJ58Mq/3atWuxaNEifPXVV2HN5FADVlUP3zPPPIN33nkH69at6+qhUBfi0h5RBHbt2oUbbrihq4fRa5w8eRLr1q3Dhx9+iKeffjrs111yySU4cOAAjh49GnFeDVG4zGYznnrqqa4eBnUxBlJEYSopKcHx48dbbOumjjN+/HhUVFRgxYoVGDlyZESvnT9/fgeNikh3yy23dPUQqBvg0h4RERFRlJg8QERERBQlBlJEREREUWIgRURERBQlBlJEREREUWIgRURERBQlBlJEREREUWIgRURERBQlBlJEREREUWIgRURERBQlBlJEREREUfp/lJvHDSIDCawAAAAASUVORK5CYII=","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["import numpy as np\n","import scipy.stats as st\n","import matplotlib.pyplot as plt\n","import seaborn as sns\n","\n","# 定义正确率范围\n","x = np.linspace(0, 1, 10000)  # 正确率在0到1之间\n","\n","# 定义先验分布 (基于文献，正确率均值为70%)\n","prior_mean = 0.70\n","prior_std = 0.05\n","prior_y = st.norm.pdf(x, loc=prior_mean, scale=prior_std) / np.sum(\n","    st.norm.pdf(x, prior_mean, prior_std)\n",")\n","\n","# 生成似然分布 (基于新实验数据，正确率均值为75%)\n","likelihood_mean = 0.75\n","likelihood_std = 0.05\n","likelihood_values = st.norm.pdf(x, loc=likelihood_mean, scale=likelihood_std) / np.sum(\n","    st.norm.pdf(x, likelihood_mean, likelihood_std)\n",")\n","\n","# 计算后验分布\n","posterior_mean = (prior_mean * likelihood_std**2 + likelihood_mean * prior_std**2) / (\n","    prior_std**2 + likelihood_std**2\n",")\n","posterior_std = np.sqrt(\n","    (prior_std**2 * likelihood_std**2) / (prior_std**2 + likelihood_std**2)\n",")\n","posterior = st.norm.pdf(x, loc=posterior_mean, scale=posterior_std) / np.sum(\n","    st.norm.pdf(x, posterior_mean, posterior_std)\n",")\n","\n","# 绘制先验、似然和后验分布\n","plt.plot(x, prior_y, color=\"#f0e442\", label=\"prior\")\n","plt.fill_between(x, prior_y, color=\"#f0e442\", alpha=0.5)\n","plt.plot(x, likelihood_values, color=\"#0071b2\", label=\"likelihood\")\n","plt.fill_between(x, likelihood_values, color=\"#0071b2\", alpha=0.5)\n","plt.plot(x, posterior, color=\"#009e74\", label=\"posterior\")\n","plt.fill_between(x, posterior, color=\"#009e74\", alpha=0.5)\n","\n","# 设置 x 和 y 轴标签\n","plt.xlabel(\"$\\mu$ for accuracy (correct response rate)\")\n","plt.ylabel(\"density\")\n","plt.legend()\n","\n","# 移除图的上、右边框线\n","sns.despine()\n","\n","# 展示图像\n","plt.show()"]},{"cell_type":"markdown","metadata":{},"source":["##### 补充：Gamma-Poisson conjugate family  \n","\n","Gamma-Poisson共轭家族是一组统计模型，其中Poisson分布用于描述计数数据，而Gamma分布作为其参数的先验分布。  \n","- Poisson分布是一种离散概率分布，用于描述在固定时间间隔或空间区域内发生某一事件的次数。  \n","- Gamma分布是一种连续概率分布，用于描述等待时间直到第$k$个事件发生的时间长度，或者作为正态分布方差的共轭先验。"]},{"cell_type":"markdown","metadata":{},"source":["**例子：随机点运动任务中的被试招募**：  \n","\n","假设一位心理学研究者每天都需要每天招募新的被试参与随机点运动任务实验。  \n","\n","他认为平均下来，每天可以招募到 12 个被试，这个数字大约在 5 到 20 之间浮动。  \n","\n","我们假设研究者**平均每天招募到的被试数量**为$\\lambda$  \n","> 请注意一些新的希腊字母：λ = lambda  \n","\n","**🤔我们该使用哪种分布来描述下面这个例子？**  "]},{"cell_type":"markdown","metadata":{},"source":["需要注意的是，通常我们会：  \n","1. 为$\\lambda$选择一个合适的先验  \n","2. 接着收集数据，并且选择一个合适的数据模型  \n","3. 结合先验与数据，更新我们对$\\lambda$的信念  \n"]},{"cell_type":"markdown","metadata":{},"source":["在这一节中，为了方便探讨共轭先验，我们先从似然函数出发，然后再选取先验，最后讨论后验和共轭先验的关系。  \n","\n","- 我们需要先假定似然函数$L(\\lambda|y)$是已知的  \n","- 再去选取一个合适的先验分布$p(\\lambda)$  \n","- 最后使得后验分布与先验分布具有相同的数学形式。"]},{"cell_type":"markdown","metadata":{},"source":["**Poisson分布**  \n","\n","**泊松分布(Poisson distribution)** 适用于描述在一定时间间隔内事件发生的次数。  \n","\n","**Poisson分布**的概率质量函数(pmf)可以表示为：  \n","\n","$$  \n","f(y) =  \\frac{\\lambda^{y}e^{-\\lambda}}{y!}  \n","$$  \n","\n","* Poisson分布只有一个参数$\\lambda$，表示事情发生平均发生率(event rate)或事件发生的期望次数。  \n","* $y$是数据，指在一定时间间隔中事件发生的次数。  \n","* $f(y)$表示在某单位时间内，某事件$y$发生的平均次数的概率。  \n","* 例如，假设研究者平均每天可以招募 12 个被试（$\\lambda = 12$），那么在一天内招募到 5 个被试的概率 $f(5)$ 招募到 10 名被试的概率 $f(10)$，或招募到 15 名被试的概率 $f(15)$ 都可以通过 Poisson 分布进行计算。  \n"]},{"cell_type":"markdown","metadata":{},"source":["**Poisson分布图示**  \n","\n","下图展示了不同$\\lambda$下，事件发生y次的可能性分布  \n","\n","![Image Name](https://cdn.kesci.com/upload/skt7lxrj64.png?imageView2/0/w/900)"]},{"cell_type":"markdown","metadata":{},"source":["**Potential priors**  \n","\n","**🤔思考：**  \n","\n","我们有如下形式的Poisson 似然函数：  \n","\n","$$  \n","L(\\lambda | \\vec{y}) = \\frac{\\lambda^{\\sum y_i}e^{-n\\lambda}}{\\prod_{i=1}^n y_i!} \\propto \\lambda^{k}e^{-r\\lambda}  \n","$$  \n","\n","从公式中可以看到，似然函数具有类似于 $\\lambda^{k} e^{-r\\lambda}$ 的结构。  \n","那么，哪种先验分布与这种似然函数相匹配，从而作为 Poisson 分布的**共轭先验**？  \n","\n","1. Gamma模型：$f(\\lambda) \\propto \\lambda^{s - 1} e^{-r \\lambda}$  \n","\n","2. Weibull模型：$f(\\lambda) \\propto \\lambda^{s - 1} e^{(-r \\lambda)^s}$  \n","\n","3. \"F\"模型：$f(\\lambda) \\propto \\lambda^{\\frac{s}{2} - 1}\\left( 1 + \\lambda\\right)^{-s}$  \n","\n","从形式上看，Gamma 分布与 Poisson 似然函数最匹配，  \n","在 Poisson 分布中，Gamma 分布是 $\\lambda$ 的共轭先验，计算后会得到简便的后验分布。"]},{"cell_type":"markdown","metadata":{},"source":["**共轭性**  \n","\n","Gamma分布是一种连续概率分布，用于描述等待时间直到第$k$个事件发生的时间长度，或者作为正态分布方差的共轭先验。其概率密度函数（PDF）由以下公式给出：  \n","$$  \n","f(\\lambda | \\alpha, \\beta) = \\frac{\\beta^\\alpha \\lambda^{\\alpha-1} e^{-\\beta\\lambda}}{\\Gamma(\\alpha)}  \n","$$  \n","其中，$\\lambda$ 是分布的随机变量，$\\alpha$ 和 $\\beta$ 是Gamma分布的形状参数和速率（或尺度）参数，$\\Gamma(\\alpha)$ 是Gamma函数。  \n","\n","当使用Gamma分布作为Poisson分布参数$\\lambda$的先验分布时，得到的后验分布也属于Gamma分布。这种关系称为共轭性。具体来说，如果先验分布是Gamma分布，即：  \n","$$  \n","\\lambda \\sim \\text{Gamma}(\\alpha, \\beta)  \n","$$  \n","并且我们观测到Poisson数据$Y = y$，那么后验分布也是Gamma分布，其参数更新为：  \n","$$  \n","\\lambda | Y = y \\sim \\text{Gamma}(\\alpha + y, \\beta + 1)  \n","$$  \n","这种共轭关系使得Gamma分布成为Poisson分布参数的自然选择，因为它保持了数学上的简洁性，使得后验分布的推导和分析变得容易。"]},{"cell_type":"markdown","metadata":{},"source":["### Critiques of conjugate family models\n","\n","共轭族的优势在于方便理解和计算，这种便利性也带来了**缺点**：  \n","\n","1. 共轭先验模型可能并不能适应你的先验信念。  \n","   - 例如，正态模型总是围绕均值 $μ$ 对称。因此，如果你的先验认识不是对称的，那么正态先验模型可能就不适合作为先验。  \n","2. 共轭族模型并不允许有一个完全平坦的先验(uniform prior)。  \n","   - 虽然我们可以通过设置 $\\alpha$ = $\\beta$ = 1 来使得 Beta 先验变得更加平坦，但无论是 Normal 还是 Gamma 先验（或任何具有无限支持的适当模型）都**无法调整为完全平坦**。  \n","   - 我们能做的最好的办法就是调整先验，使其具有非常高的方差，这样它们就几乎是平的了。"]}],"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.12.4"}},"nbformat":4,"nbformat_minor":2}
